13

我在 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。他们都没有工作

4

3 回答 3

19

您必须将发件人转换为预期的对象类型。

 Dim btn As Button = CType(sender, Button)

然后你就可以访问你需要的东西了。

于 2013-01-28T16:11:10.060 回答
3

试试CType(Sender, Button).Name。在这种情况下,Sender 是一个需要转换为调用类型的对象 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
于 2013-01-28T16:11:17.303 回答
-3

更简单:

如果发件人是 btnAnswer1 那么...

于 2016-12-17T15:58:22.230 回答