Мой код требует получить управляющее имя в пользовательском элементе управления Событие загрузки, проблема в том, что я получаю имя элемента управления в сборке, а не имя, которое я назначаю в форме, но если я запустил проект, я получу контрольное имя должным образом.
Чтобы проверить, просто добавьте следующий код в любой пользовательский элемент управления
Private Sub GridX_Load(sender As Object, e As EventArgs) Handles MyBase.Load
MsgBox(Me.Name)
End Sub
Во время выполнения это дает ControlName1
Во время разработки это дает ControlName
как я могу получить ControlNameX
во время выполнения?
Чтобы сделать это более понятным, добавьте два элемента управления в форму, вы увидите, что имя элемента управления в режиме проектирования одинаково.. в отличие от режима выполнения.
Если вы добавите свойство в свой пользовательский элемент управления следующим образом:
// Note: code in C#
public string ControlName
{
get
{
return Name;
}
set
{
Name = value;
MessageBox.Show(value);
}
}
Вы компилируете его, и вы добавляете его в форму, у вас есть свойство ControlName
в вашем дизайнере. Если вы измените имя в дизайнере, появится новое имя. Вместо MessageBox.Show()
вы хотите вызвать обработчик событий, чтобы вы могли что-то сделать с новым именем.