2012-02-27 9 views
0

私のコードは次のとおりです。インデックスボタンは、2010年

Private Sub btn1_Click(sender As System.Object, e As System.EventArgs) Handles btn1.Click, btn2.Click, btn3.Click 
    Dim objBtn() As Object = {btn1, btn2, btn3} 
    Dim btn As Button 
    With objBtn 
     btn = CType(objBtn(x), Button) 
     If btn.FlatStyle = FlatStyle.Standard Then 
      btn.FlatStyle = FlatStyle.Flat 
      btn.FlatAppearance.BorderColor = Color.OrangeRed 
     Else 
      btn.FlatStyle = FlatStyle.Standard 
     End If 
    End With 
End Sub 

私は自動的にxの値を制御するプログラムのために何をしなければなりませんか?つまり、私はbtn1をクリックすると、xの値は0になります。もし私がbtn2をクリックすると、xの値は1に等しくなります。ありがとうございました。

+0

なぜボタンを配列に配置していますか?既にリストを作成している場合、 'List(Of Button) 'を使用するのではなく、なぜそれを' Object'と宣言すればよいでしょうか? – Oded

+1

むしろ、問題のボタンとなる送信者オブジェクトを使用するのはなぜですか。 –

+0

odedが正しいと答えを削除しました。それはちょうどコメントであり、xを得る際にかなり陽気なスタブが追加されました。 –

答えて

1

これは、あなたが望むことをします。 :D

x = objBtn.IndexOf(sender)

0

ボタンの状態をセット内の他のボタンとは異なるように設定したようです。

これを行うのに役立つコードは次のとおりです。

Private Sub btn1_Click(sender As System.Object, e As System.EventArgs) Handles _ 
btn1.Click, btn2.Click, btn3.Click 
    Dim buttons() As Button = {btn1, btn2, btn3} 

    For Each btn in buttons 
     If btn Is sender Then 
      btn.FlatStyle = FlatStyle.Standard 
     Else 
      btn.FlatStyle = FlatStyle.Flat 
      btn.FlatAppearance.BorderColor = Color.OrangeRed 
     End If 
    Next 
End Sub 
関連する問題