在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关键字一无所知。