除了@Icemanind 的回答,您实际上可以在一行中完成:
CType(sender, Button).Visible = False
这无需验证即可工作,因为您知道sender 的类型为Button。
如果您有多个按钮要处理,您还可以向处理程序添加额外的事件,这样您就不会得到无数个单独的处理程序:
Protected Sub Button_Click(s As Object, e As EventArgs) _
Handles _
Button1.Click, Button2.Click, Button3.Click
CType(s, Button).Visible = False
End Sub
另一种选择是向多个按钮添加相同的处理程序,而不是向处理程序添加按钮:
在表单实例化(Sub New())中:
AddHandler Button1.Click, AddressOf Button_Click
AddHandler Button2.Click, AddressOf Button_Click
AddHandler Button3.Click, AddressOf Button_Click
在Form类代码中:
Protected Sub Button_Click(s As Object, e As EventArgs)
CType(s, Button).Visible = False
End Sub
最后一种方法适用于动态控件,因为您可以动态添加处理程序:
Dim button As Button
For i As Integer = 0 To 9
button = New Button With {.Name = $"Button{i}", .Text = $"Button{i}", .Left = 42, .Top = 50 + (i * 30)}
Me.Controls.Add(button)
AddHandler button.Click, AddressOf Button_Click
Next i