1

簡単な電卓を作っています。すべてのボタンにイベントハンドラーを割り当てるのにうんざりしています。非効率的です。

押されたときにボタン内のテキストを取得するイベントハンドラーを1つだけにしたい。

どうやってするか?

  Private Sub num1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles co.Click
    numPressed = num1.Text
End Sub
4

3 に答える 3

5

クリックイベントの場合:

Dim button as Button = sender
Dim theTextYouWant as String = button.Text
于 2013-03-11T10:40:09.250 に答える
2

button's click eventこのように、実行時にハンドルを効率的に追加できます。

私はあなたが呼ばれるあなたのbuttons中にあなたを持っていると思います。panelPnlBtns

'Traversing through panel and adding a common handler for buttons
For each ctrl in PnlBtns.controls
 If TypeOf ctrl is button then
   AddHandler ctrl.Click, AddressOf CommonClickHandler
 end if
Next

'Common Handler for all of your buttons.
Private Sub CommonClickHandler(ByVal sender As System.Object, ByVal e As System.EventArgs)
  MsgBox(ctype(sender,button).text)
End Sub
于 2013-03-11T11:23:16.907 に答える
2

関数で処理するすべてのイベントを追加し、どのボタンが押されたかを検出するだけです。

Private Sub num1_Click(sender As Object, ByVal e As EventArgs) _
Handles co.Click, co2.Click, co3.Click 'etc
    Dim btn As Button = CType(sender, Button)
    numPressed = btn.Text
End Sub
于 2013-03-11T10:49:39.890 に答える