.NETにおいて、フォーム上に配置されたコントロールで発生したイベントを、各コントロールごとではなくて、まとめてハンドルする方法はないでしょうか。
例えば次のようなフォームがあります。
(Button1, Button2, Button3は、フォームに配置されたボタンとします)
Public Class MyForm
Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click, Button3.Click
End Sub
End Class
ボタンが3つ程度の場合はこれで良いと思うのですが、例えば(極端に言えば)ボタンが100個ある場合、
Handles Button1.Click, Button2.Click, (途中省略.....) Button100.Click
と書くしかないのでしょうか。
後で対象コントロールが増えたり減ったりした場合に間違いが起こりそうなので、このような書き方は避けたいです。
フォーム上のどのコントロールでも構わないからとにかくクリックイベントが発生したことを知るための方法はないでしょうか。
例えば次のようなかんじでハンドリングできないでしょうか。
Private Sub All_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles フォーム上の任意のコントロールでのClickイベント
End Sub
(環境はVB.NET2005です)
No.1ベストアンサー
- 回答日時:
AddHandlerを使えば関数とイベントをコード上でハンドルすることができますので
以下のような方法でできるかと思います。(孫コントロールまでしちゃいますが)
-------------------------------
Private Sub SetEvents(ByVal ctrls As System.Windows.Forms.Control.ControlCollection)
For Each ctrl As Control In ctrls
If ctrl.HasChildren Then
SetEvents(ctrl.Controls)
ElseIf ctrl.GetType Is GetType(Button) Then
AddHandler ctrl.Click, AddressOf Button_Click
End If
Next
End Sub
Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
'処理
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 九九の答えの計算 3 2022/12/20 22:13
- Visual Basic(VBA) Visual Basic : ImageListの画像がそろったときにメッセージを表示 1 2023/07/20 13:53
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Access(アクセス) Vba Userformを前面に出すについて 3 2022/04/15 12:29
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) ListBox1をClickしたときのイベント 5 2022/12/11 19:45
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ユーザーフォームで動的(Me.Con...
-
エクセル・VBA CheckBoxのオブ...
-
ExcelVBAでListViewが使用できない
-
WinAPIで電卓をクリック
-
C#で角が丸いテキストボックス
-
カメラスクロールするのを動画...
-
asp.netでToolTipコントロール...
-
もしフォームヘッダーにコント...
-
エクセル コントロールツール...
-
chr関数の呼び出しで「プロ...
-
悩みがあろうと、それなりに幸...
-
fpSpreadコントロール ライセ...
-
コンボボックスの文字によるif...
-
USB I/Oのデジタル信号をvbaで...
-
ListViewのチェックボックスに...
-
DataGridView、1セルに複数コ...
-
エクセルVBAでオプションボタン...
-
Labelコントロールの(左右)余...
-
OCXって何ですか?
-
With~EndWithの省略部分と引数...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
カメラスクロールするのを動画...
-
エクセル・VBA CheckBoxのオブ...
-
vb.netで画面のコントロールId...
-
エクセルVBAでオプションボタン...
-
EXCELでactivexコントロールを...
-
ExcelVBAでListViewが使用できない
-
excelのリストボックスで選択し...
-
ユーザーフォームで動的(Me.Con...
-
フォーム上の現在アクティブな...
-
C#で自分のウインド・ハンド...
-
変数をコントロール型で使用す...
-
VBAのフォームでTextBoxがいっ...
-
コントロールを移動できない
-
Groupboxの配下のコントロール...
-
C#で角が丸いテキストボックス
-
(VBA)スピンボタンの大量...
-
間違えて配置してしまったコン...
-
エクセル コントロールツール...
-
'ckbl' コントロールは作成され...
-
OCXって何ですか?
おすすめ情報