• 締切済み

VB2008 textbox入力判断について

こんばんは、いつもお世話になりました。 VB2008で "ストップワォッチ"と"タイムダウン"のプログラムを作っています。 要望: 1 TextBox1.textが入力しない時、ストップワォッチを実行 (OK) 2 TextBox1.textが入力する時、TextBox1.textの値からタイムダウンを実行 (OK) 3 TextBox1.textの値をクリアされた時、再度ストップワォッチを実行 4 TextBox1.textに文字列入力された時、数字に変更してから タイムダウンを実行 (例:全角12:56 →12:56) 5 TextBox1.textが入力エラーの場合は プログラムを抜け、何もしないこと 下記のソースでしたら、3と4,5はまだできていません。 宜しくお願いします。 ---------------------------------------------------- 'TextBox1.textが入力しない時、ストップワォッチを実行 If TextBox1.Modified = False Then Timer1.Enabled = True datStart = Now() Me.Button1.Enabled = False Me.Button3.Enabled = False End If 'TextBox1.textが入力する時、TextBox1.textの値からタイムダウンを実行 If TextBox1.Modified = True Then dTime = TextBox1.Text Timer2.Interval = 1000 Timer2.Enabled = True End If 'TextBox1.textの値を再度クリアされた時、ストップワォッチを実行 If Len(TextBox1.Text) = 0 Then TextBox1.Modified = False End If -------------------------------------------------------------- 以上

みんなの回答

回答No.1

これってイベントで処理していないのですか? 1~5でやりたいことをTextBoxの各イベントに当てはめてみてはいかがでしょう?(各要望にも不明な点がありますが) > 1 TextBox1.textが入力しない時、ストップワォッチを実行 (OK) これは「フォーカスを持っていない」という判断と「入力後、数秒間テキストの変更がない」という判断ができます。 「フォーカスが外れたら」という条件であれば、LostFocusイベントで処理。 「最後の文字を入力してから○○秒後」であれば、TextChangedイベントでタイマーをスタートしてトリガとする。 > 2 TextBox1.textが入力する時、TextBox1.textの値からタイムダウンを実行 (OK) TextChangedイベントかと思ったのですが、TextBox1の値でタイムダウンを実行の意味が分かりません。「入力する時 = フォーカスを得たとき」であればGotFocusイベントですけども。 > 3 TextBox1.textの値をクリアされた時、再度ストップワォッチを実行 TextChangedイベントで文字列が無くなった場合。 ちなみに、Len()を使わずともTextBox1.TextLengthで文字数が取れま。 > 4 TextBox1.textに文字列入力された時、数字に変更してから タイムダウンを実行 (例:全角12:56 →12:56) > 5 TextBox1.textが入力エラーの場合は プログラムを抜け、何もしないこと 入力完了後に内容をチェック場合は「Validating」イベント。 時刻に変換できるか否かは、Date.TryParseが手っ取り早いです。 全体的に見て「文字列を入力する時」の定義があいまいな気がします。「フォーカスを得る/失う」「文字が追加される/削除される」といった明確なタイミングで表したほうが、おそらくコーディングするときも分かりやすいと思います。

xlhjp
質問者

お礼

ご回答頂き、ありがとうございました。 せっかく教えて頂きましたが、VBの勉強はまだ始まったばかりなので 何をするかよくわかりませんでした。 本件について、下記のソースを加えたら、目的を達成しました。 ---------------Button1 Clickソース内の最初に追加-------- If TextBox3.Text = Nothing Then TextBox3.Modified = False End If -------------------------------------------------------- 以上