- ベストアンサー
【VB2005】コードの書き方を教えてください。
いつもお世話になります。 ボタンが50個有ります。 それぞれのボタンを押したら色が赤に変わります。 全部のボタンが赤に変わった時点で違う処理を走らせたいのですが、 If button1.backcolor=pink And button2.backcolor=pink And button3.backcolor...... then messagebox.show("A") end if などと頭の悪い方法より、 For eachを使って簡単に書けないでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ANo.1さんの(3)になるのでしょうか。 Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load For Each obj As Control In Me.Controls If TypeOf (obj) Is Button Then AddHandler obj.Click, AddressOf btnClick End If Next End Sub Private Sub btnClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Dim btnWork As Button = CType(sender, Button) btnWork.BackColor = Drawing.Color.Pink For Each obj As Control In Me.Controls If TypeOf (obj) Is Button AndAlso obj.BackColor <> Drawing.Color.Pink Then Exit Sub End If Next Call ShowMyDialog() End Sub Private Sub ShowMyDialog() MessageBox.Show("A") End Sub ※画面上の全てのボタンをチェックしています。一部のみの場合はNameで区別するなりTagで区別するなりPanelの中にいれるなりして下さい
その他の回答 (2)
こんばんは。 コントロールの配列を作成する http://dobon.net/vb/dotnet/control/buttonarray.html ここを参考にすればブタンの配列が作れます。
お礼
VB2005はコントロール配列を作るのはじゃまくさいのです。
- imogasi
- ベストアンサー率27% (4737/17069)
イベントプロになるので (1)ボタンを押すと、あるPUBLIC変数に+1、消すとー1 になるよう、全ボタンのイベントにそのコードを組み入れる。 (2)そして、どれでもボタンを押したとき50に達したかどうか判断する。 もっと良いのは (3)50個のボタンのクリックイベントをあたかも1つのボタンのように記述できる方法を考える。(イベントのクラス化?) そうできると、(1)(2)は、コード数行で済むでしょう。 (3)は私は詳しくないので、ご存知の方の回答を待つ。
お礼
ありがとうございました。
お礼
参考にして無事思い通りの処理ができました。 どうもありがとうございました。本当にありがとう。