我的代码需要在用户控件中获取控件名称Load事件,问题是我在程序集中获取控件名称,而不是我在表单中指定的名称,但如果我运行项目,我会正确获取控件名称。 / p>
要进行测试,只需将以下代码添加到任何用户控件
即可Private Sub GridX_Load(sender As Object, e As EventArgs) Handles MyBase.Load
MsgBox(Me.Name)
End Sub
在运行时,这会给出ControlName1
在设计时,这会给出ControlName
如何在运行时获取ControlNameX
?
为了更清楚,在表单中添加两个控件,您将看到设计模式下控件的名称是相同的..与运行时模式不同..
答案 0 :(得分:1)
如果您向用户控件添加属性,请执行以下操作:
// Note: code in C#
public string ControlName
{
get
{
return Name;
}
set
{
Name = value;
MessageBox.Show(value);
}
}
您编译它并将其添加到表单中,您的设计器中有ControlName
属性。如果更改设计器中的名称,则会显示新名称。而不是您想要调用事件处理程序的MessageBox.Show()
,所以您可以使用新名称执行某些操作。