dポイントプレゼントキャンペーン実施中!

こんばんは、いつもお世話になりました。

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
--------------------------------------------------------------

以上

「VB2008 textbox入力判断につ」の質問画像

A 回答 (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が手っ取り早いです。

全体的に見て「文字列を入力する時」の定義があいまいな気がします。「フォーカスを得る/失う」「文字が追加される/削除される」といった明確なタイミングで表したほうが、おそらくコーディングするときも分かりやすいと思います。
    • good
    • 0
この回答へのお礼

ご回答頂き、ありがとうございました。

せっかく教えて頂きましたが、VBの勉強はまだ始まったばかりなので
何をするかよくわかりませんでした。

本件について、下記のソースを加えたら、目的を達成しました。


---------------Button1 Clickソース内の最初に追加--------
If TextBox3.Text = Nothing Then
TextBox3.Modified = False
End If
--------------------------------------------------------

以上

お礼日時:2009/09/20 20:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!