0

ボタンがあり、クリックするたびにテキストボックスにテキストが書き込まれると想像してください。

すなわち:

   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button41.Click
        textbox.Text &= "1"
    End Sub

そして、これらのボタンが数字として 10 個あるとします (たとえば、0-9)。これらのボタンのクリック イベントを 1 つずつ処理するのではなく (buttonxclickevent は textbox.text = x などを処理します);よりエレガントな方法はありますか?これらのボタンとイベントを繰り返しますか?

4

3 に答える 3

1

VB.NETコードを見せていただいたので、VB.NETでお答えします。すべてに対して 1 つのハンドラーを使用できます。

Public Class Form1

    Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load
        For Each btn In Me.Controls.OfType(Of Button)()
            AddHandler btn.Click, AddressOf buttonClicked
        Next
    End Sub

    Private Sub buttonClicked(sender As Object, e As EventArgs)
        Dim btn As Button = DirectCast(sender, Button)
        TextBox1.Text &= "1"
    End Sub

End Class

Enumerable.OfTypeフィルタおよびキャストするため、結果はIEnumerable(Of Button).

于 2012-10-04T14:45:34.273 に答える
0

このように行うことができます:

Private Sub Button1_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) _
    Handles Button1.Click, Button2.Click, Button3.Click
        Dim b As Button = CType(sender, Button)
        Label1.Text = b.ID
End Sub
于 2012-10-04T14:47:11.410 に答える
0

-クラスに実装させますActionListener

-このようにactionPerformed() メソッドをオーバーライドしてボタンを識別し、それに応じてメッセージを に入力しますJTextField

JButton b1;
JButton b2;

public void actionPerformed(ActionEvent e) {
   if (e.getSource() == b1) {
      // Do something...
   }
   if (e.getSource() == b2) {
      // Do something else...
   }
}
于 2012-10-04T14:40:42.680 に答える