簡単な電卓を作っています。すべてのボタンにイベントハンドラーを割り当てるのにうんざりしています。非効率的です。
押されたときにボタン内のテキストを取得するイベントハンドラーを1つだけにしたい。
どうやってするか?
Private Sub num1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles co.Click
numPressed = num1.Text
End Sub
クリックイベントの場合:
Dim button as Button = sender
Dim theTextYouWant as String = button.Text
button's click event
このように、実行時にハンドルを効率的に追加できます。
私はあなたが呼ばれるあなたのbuttons
中にあなたを持っていると思います。panel
PnlBtns
'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
関数で処理するすべてのイベントを追加し、どのボタンが押されたかを検出するだけです。
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