2013-03-11 70 views
1

我正在製作一個簡單的計算器。我厭倦了在每個按鈕中分配事件處理程序,這是效率低下的。使用僅一個事件處理程序按下按鈕時獲取文本

我只想要一個事件處理程序在按下按鈕時獲取按鈕內的文本。

如何做到這一點?

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

你能分享你的代碼嗎? – spajce 2013-03-11 10:34:51

+1

你確定要這樣做嗎?如果您嘗試過,我認爲您不會再將您的演示文稿與您的實施結合起來。 – 2013-03-11 10:41:00

回答

5

在點擊事件:

Dim button as Button = sender 
Dim theTextYouWant as String = button.Text 
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 
2

你可以有效地添加處理您的button's click event在運行期間這樣,

我假設你是你的buttonspanel的內部,稱爲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