• ベストアンサー

【VB2005】コードの書き方を教えてください。

いつもお世話になります。 ボタンが50個有ります。 それぞれのボタンを押したら色が赤に変わります。 全部のボタンが赤に変わった時点で違う処理を走らせたいのですが、 If button1.backcolor=pink And button2.backcolor=pink And button3.backcolor...... then    messagebox.show("A") end if などと頭の悪い方法より、 For eachを使って簡単に書けないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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の中にいれるなりして下さい

sineminna
質問者

お礼

参考にして無事思い通りの処理ができました。 どうもありがとうございました。本当にありがとう。

その他の回答 (2)

noname#187541
noname#187541
回答No.2

こんばんは。 コントロールの配列を作成する http://dobon.net/vb/dotnet/control/buttonarray.html ここを参考にすればブタンの配列が作れます。

sineminna
質問者

お礼

VB2005はコントロール配列を作るのはじゃまくさいのです。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

イベントプロになるので (1)ボタンを押すと、あるPUBLIC変数に+1、消すとー1 になるよう、全ボタンのイベントにそのコードを組み入れる。 (2)そして、どれでもボタンを押したとき50に達したかどうか判断する。 もっと良いのは (3)50個のボタンのクリックイベントをあたかも1つのボタンのように記述できる方法を考える。(イベントのクラス化?) そうできると、(1)(2)は、コード数行で済むでしょう。 (3)は私は詳しくないので、ご存知の方の回答を待つ。

sineminna
質問者

お礼

ありがとうございました。