如何在其活动中引用控件? (不使用它的名字)

时间:2008-12-01 18:28:41

标签: .net vb.net

.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

4 个答案:

答案 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事件解释你们(他有几个文本框,只有一个方法来处理它们:

alt text
(来源: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