我在VB.NET中有一个事件可以同时处理几个按钮点击。我需要知道选择中的哪个按钮启动了该事件。任何想法如何做到这一点?我的代码如下:
Private Sub Answer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAnswer1.Click, btnAnswer2.Click, btnAnswer3.Click, btnAnswer4.Click
'output button ID that caused event
End Sub
我已经尝试过sender.Id,e.Id,sender.name,e.name。他们都没有工作
答案 0 :(得分:16)
您必须将发件人转换为预期的对象类型。
Dim btn As Button = CType(sender, Button)
然后你可以访问你需要的东西。
答案 1 :(得分:2)
试试CType(Sender, Button).Name
。发件人是一个对象,你需要在这种情况下转换为调用类型Button。如果您需要发件人的更多属性,请使用U1199880的答案。但通常当我尝试处理多次点击时,我将使用Tag属性,为其分配索引。这样的事情。
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click, Button2.Click, Button3.Click
Dim index As Integer
If Not Integer.TryParse(CType(sender, Button).Tag.ToString, index) Then Exit Sub
Select Case index
Case 0
Case 1
Case 2
....
End Select
End Sub
答案 2 :(得分:-2)
更简单:
如果发件人是btnAnswer1,那么......