在VB.NET中,控件是否可以用作“选择…”情况下的开关变量?

在VB.NET中,控件是否可以用作“选择…”情况下的开关变量?,vb.net,Vb.net,我正在开发一个函数,该函数处理来自多个按钮的事件,并尝试根据单击的按钮定义一个选择案例。像这样的 Private Sub btnClick(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles btnThis.Click, _ btnThat.Click, _ btnTheOther.Click Dim but

我正在开发一个函数,该函数处理来自多个按钮的事件,并尝试根据单击的按钮定义一个选择案例。像这样的

   Private Sub btnClick(ByVal sender As System.Object, ByVal e As System.EventArgs) _
        Handles btnThis.Click, _
                btnThat.Click, _
                btnTheOther.Click
        Dim button_clicked As Button = CType(sender, Button)

        ...Do some common parts...

        Select button_clicked

            Case btnThis
                 ...Do this...

            Case btnThat
                 ...Do that...

            Case btnTheOther
                 ...Do the other...

            Case Else

        End Select
但我无法编译它;它报告“Operator=未为类型“System.Windows.Forms.Button”和“System.Windows.Forms.Button”定义。我也试过了

Select button_clicked

    Case btnThis.Equals


这也不管用。是否有一种方法可以用这种方式定义Select…案例,还是由于尝试比较引用类型而注定失败?

使用控件名称是一种选择:

Private Sub btnClick(ByVal sender As Object, ByVal e As EventArgs) _
            Handles btnThis.Click, _
                    btnThat.Click, _
                    btnTheOther.Click

  Select DirectCast(sender, Button).Name
    Case btnThis.Name
      ...do this...
    Case btnThat.Name
      ...do that...
    Case btnTheOther.Name
      ...do the other...
    Case Else
      ...etc
  End Select
End Sub

使用控件名称是一个选项:

Private Sub btnClick(ByVal sender As Object, ByVal e As EventArgs) _
            Handles btnThis.Click, _
                    btnThat.Click, _
                    btnTheOther.Click

  Select DirectCast(sender, Button).Name
    Case btnThis.Name
      ...do this...
    Case btnThat.Name
      ...do that...
    Case btnTheOther.Name
      ...do the other...
    Case Else
      ...etc
  End Select
End Sub
如果对象相等,则必须使用关键字进行比较,但必须使用语句进行检查

If sender Is btnThis Then
     ...
ElseIf sender Is btnThat Then
     ...
End If
如果对象相等,则必须使用关键字进行比较,但必须使用语句进行检查

If sender Is btnThis Then
     ...
ElseIf sender Is btnThat Then
     ...
End If

这确实有效,但它可能会让任何需要维护代码的人感到困惑。就我个人而言,我更愿意避免这种情况——本质上这是一种
如果。。。如果。。。ElseIf…
块伪装为
选择大小写
。如果。。。如果。。。如果…这确实有效,但它可能会让任何需要维护代码的人感到困惑。就我个人而言,我更愿意避免这种情况——本质上这是一种
如果。。。如果。。。ElseIf…
块伪装为
选择大小写
。如果。。。如果。。。否则…谢谢你;我对Is关键字一无所知,真是可悲;不幸的是,我对Is关键字一无所知。