常に複数のコントロールの状態を見る(?)イベント への返答

投稿で使用できる特殊コードの説明。(別タブで開きます。)
本名は入力しないようにしましょう。
投稿した後で削除するときに使うパスワードです。返答があった後は削除できません。
返答する人が目安にします。相手が小学生か社会人かで返答の仕方も変わります。
最初の投稿が質問の場合、質問者が解決時にチェックしてください。(以降も追加書き込み・返信は可能です。)
※「過去ログ」について書くときはその過去ログのURLも書いてください。

以下の返答は逆順(新しい順)に並んでいます。

投稿者 VB.NET見習い  (社会人) 投稿日時 2018/5/15 13:12:44
ありがとうございます

確かにそのようにすれば良さそうですね
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2018/5/15 11:58:48
Handles 句で並べていくのでなく、Form の Load 時などに
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」のあとに複数書いていくべきなのでしょうか。(コントロールの数・種類が増えると冗長になりそうだと思っているのですが・・・)



    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