.net中是否有一种方法可以一般性地引用控件(如果控件名称发生更改等),则表示没有问题。
即“me”关键字的对象级版本。
所以,我想在下面的例子中使用泛型而不是RadioButton1。
Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged
If RadioButton1.Checked Then
Beep()
End Sub
答案 0 :(得分:8)
是的,“sender”参数是触发事件的控件。
答案 1 :(得分:3)
让我们看看我是否记得VB.NET:
Dim rb as RadioButton = sender
If rb.Checked Then...
答案 2 :(得分:2)
您可以选择活动的名称。您可以使用事件窗口(属性窗口旁边)或代码内部来完成。您始终选择名称。您只需使用“checkedEvent”。
this.checkbox.EventXYZ += new EventXZY(checkedEvent);
在此方法中,您可以使用发送方对象并将其CAST(CheckBox)并使用它的属性...和行为......
public ... checkedEvent(object sender,...)
((RadioButton)sender).....
你可以找到一个很棒的 article ,它可以在VB.NET中用TextBox事件解释你们(他有几个文本框,只有一个方法来处理它们:
(来源:clip2net.com)
答案 3 :(得分:2)
如果您只有一个触发事件处理程序的控件,那么没有理由概括代码,因此您不必引用按钮的实际名称。如果控件不存在,编译将会中断。
但是,如果你有几个控件挂钩到同一个事件处理程序,那么你应该使用传递给处理程序的第一个参数(sender)。现在,您可以对触发事件的任何控件执行通用操作:
Private Sub rbtn_CheckedChanged(ByVal sender As Object, ByVal e As System.EventArgs)
Dim rbtn As RadioButton = TryCast(sender, RadioButton)
If rbtn IsNot Nothing Then
If rbtn.Checked Then
rbtn.Text = rbtn.Text & "(checked)"
End If
End If
End Sub