【问题标题】:How to know which command button is clicked in vb.net?如何知道在 vb.net 中单击了哪个命令按钮?
【发布时间】:2013-12-25 15:52:34
【问题描述】:

这看起来很容易解决,但仍然没有找到问题的根源! 我在 vb.net 的表单中插入了 14-15 个按钮。我将所有这些事件的 Click 事件结合起来,并将所述事件命名为“Digits”。 我想知道在这 15 个按钮中按下了哪个按钮。 看起来是这样的:

Private Sub Digits(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Subtract.Click, Multiply.Click, Equal.Click, Divide.Click, Clear.Click, Button12.Click, Backspace.Click, B9.Click, B8.Click, B7.Click, B6.Click, B5.Click,
   B4.Click, B3.Click, B2.Click, B1.Click, B0.Click, Addition.Click    

End Sub  

这看起来就像另一个事件中的一个事件!这是否有可能知道按下了哪个键?

【问题讨论】:

  • 最简单的方法是:If sender.Equals(B1) Then ...

标签: vb.net winforms visual-studio visual-studio-2008


【解决方案1】:

您的 sender 对象是生成 Click 事件的按钮,只需将其转换为按钮并相应地使用它。

Private Sub Digits(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Subtract.Click, Multiply.Click, Equal.Click, Divide.Click, Clear.Click, Button12.Click, Backspace.Click, B9.Click, B8.Click, B7.Click, B6.Click, B5.Click, B4.Click, B3.Click, B2.Click, B1.Click, B0.Click, Addition.Click
    Dim b As Button = DirectCast(sender, Button)
    'b will be the button that generated the click event

End Sub

【讨论】:

    【解决方案2】:

    如果您想根据点击的按钮执行某些功能,您可以为您希望使用的每个句柄编写一个 if 语句。

    Private Sub Digits(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Subtract.Click, Multiply.Click, Equal.Click, Divide.Click, Clear.Click, Button12.Click, Backspace.Click, B9.Click, B8.Click, B7.Click, B6.Click, B5.Click, B4.Click, B3.Click, B2.Click, B1.Click, B0.Click, Addition.Click
        If sender.name.tostring.contains("ButtonName")
                 'do something
        else if sender.........
        ....
        End if 
    
    End Sub
    

    通过使用 contains 选项,您无需键入整个句柄名称。这也可以让您为类似的按钮选择相同的操作,例如

    if sender.name.tostring.contains("mult") then 
       'multiply
    if sender.name.tostring.contains("B") then
      'all buttons that B1-B9
    

    【讨论】:

      猜你喜欢
      • 2017-06-04
      • 1970-01-01
      • 2012-05-12
      • 2021-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多