#782 | 複数コントロールのイベントプロシージャを1ケ所に集約するには? | フォーム、VBA | |
複数のコントロールのあるイベントの処理内容がほぼ同じような場合、「VB.NET」では「Handles」句に「コントロール名.イベント名」を列挙することで、1つのプロシージャにそれらを集約して記述することができます。 ■コントロールごとにイベントプロシージャを書く場合 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click MessageBox.Show("Button1がクリックされました!") End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click MessageBox.Show("Button2がクリックされました!") End Sub Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click MessageBox.Show("Button3がクリックされました!") End Sub ■1つのプロシージャに集約して書く場合 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click, Button2.Click, Button3.Click MessageBox.Show(sender.Name + "がクリックされました!") End Sub それに対してAccessの「VBA」ではそのようなHandles句の機能はないため、コントロールごとにイベントプロシージャを記述する必要があります。 Private Sub cbo従業員1_AfterUpdate() Me!txt氏名1 = Me!cbo従業員1.Column(1) End Sub Private Sub cbo従業員2_AfterUpdate() Me!txt氏名2 = Me!cbo従業員2.Column(1) End Sub Private Sub cbo従業員3_AfterUpdate() Me!txt氏名3 = Me!cbo従業員3.Column(1) End Sub Private Sub cbo従業員4_AfterUpdate() Me!txt氏名4 = Me!cbo従業員4.Column(1) End Sub Private Sub cbo従業員5_AfterUpdate() Me!txt氏名5 = Me!cbo従業員5.Column(1) End Sub それには、次のようにします。
実行例: ※参考Tips:「#783 イベントプロパティを動的に設定するには?」 |
|||
|
Copyright © T'sWare All rights reserved |