Невозможно получить имя UserControl в режиме разработки

1

Мой код требует получить управляющее имя в пользовательском элементе управления Событие загрузки, проблема в том, что я получаю имя элемента управления в сборке, а не имя, которое я назначаю в форме, но если я запустил проект, я получу контрольное имя должным образом.

Чтобы проверить, просто добавьте следующий код в любой пользовательский элемент управления

Private Sub GridX_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    MsgBox(Me.Name)
End Sub

Во время выполнения это дает ControlName1

Во время разработки это дает ControlName

как я могу получить ControlNameX во время выполнения?


Чтобы сделать это более понятным, добавьте два элемента управления в форму, вы увидите, что имя элемента управления в режиме проектирования одинаково.. в отличие от режима выполнения.

  • 0
    Я запускаю код, чтобы получить значение Me.Name, и оно показывает мое имя моей формы. Но вы можете искать текст на границе формы, то есть Me.Text.
  • 1
    Вы путаете control.Name со ссылкой на объект (т.е. имя переменной, используемой в коде)?
Показать ещё 3 комментария
Теги:
winforms

1 ответ

0

Если вы добавите свойство в свой пользовательский элемент управления следующим образом:

// Note: code in C#
public string ControlName
{
    get
    {
        return Name;
    }
    set
    {
        Name = value;
        MessageBox.Show(value);
    }
}

Вы компилируете его, и вы добавляете его в форму, у вас есть свойство ControlName в вашем дизайнере. Если вы измените имя в дизайнере, появится новое имя. Вместо MessageBox.Show() вы хотите вызвать обработчик событий, чтобы вы могли что-то сделать с новым именем.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню