常に複数のコントロールの状態を見る(?)イベント への返答
投稿で使用できる特殊コードの説明。(別タブで開きます。)
以下の返答は逆順(新しい順)に並んでいます。
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2018/5/15 11:58:48
Handles 句で並べていくのでなく、Form の Load 時などに
AddHandler ステートメントで動的に割り当ててはいかがでしょうか。
AddHandler ステートメントで動的に割り当ててはいかがでしょうか。
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim textBoxes As New List(Of TextBox)() From {TextBox2, TextBox3, TextBox4}
For Each txt In textBoxes
AddHandler txt.TextChanged, Sub() TextBox1.Text = If(textBoxes.Any( _
Function(t) t.TextLength = 0), "未記入有り", "全て記入済み")
Next
End Sub
投稿者 (削除されました)  ()
投稿日時
2018/5/15 11:54:07
(削除されました)
投稿者 VB.NET見習い  (社会人)
投稿日時
2018/5/15 00:21:45
冷静に読み直してたらtimer.tickの使い方間違ってますよね・・・勉強し直してきます
投稿者 VB.NET見習い  (社会人)
投稿日時
2018/5/14 21:18:57
こんばんは、VB.NETを始めて1ヵ月くらいのプログラミング初心者です。
環境はWindows7 Visual Studio2017です。
今回お聞きしたいのは「常に複数のコントロールの状態を見るイベント」の実装です。
複数在るコントロールの状態を常に監視して、状態が変わった時に処理を行うという風なコードを書いてみたいのですがTimer.tick以外にスマートなイベントがあるでしょうか。やはりTextChangedやCheckedChangedなどを「Handles」のあとに複数書いていくべきなのでしょうか。(コントロールの数・種類が増えると冗長になりそうだと思っているのですが・・・)
環境はWindows7 Visual Studio2017です。
今回お聞きしたいのは「常に複数のコントロールの状態を見るイベント」の実装です。
複数在るコントロールの状態を常に監視して、状態が変わった時に処理を行うという風なコードを書いてみたいのですがTimer.tick以外にスマートなイベントがあるでしょうか。やはりTextChangedやCheckedChangedなどを「Handles」のあとに複数書いていくべきなのでしょうか。(コントロールの数・種類が増えると冗長になりそうだと思っているのですが・・・)
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
Dim textBoxes As New List(Of TextBox)
textBoxes.Add(TextBox2)
textBoxes.Add(TextBox3)
textBoxes.Add(TextBox4)
For Each t In textBoxes
If t.Text <> "" Then
TextBox1.Text = "全て記入済み"
ElseIf t.Text = "" Then
TextBox1.Text = "未記入有り"
End If
Next
End Sub
確かにそのようにすれば良さそうですね