Name
является свойством класса Control
, поэтому каждый элемент управления имеет это свойство. Это не значит, что его нужно устанавливать, поэтому некоторые элементы управления не имеют имени. Когда вы добавляете элемент управления к своей форме в конструкторе, происходит следующее: устанавливается свойство Name
И объявляется поле с этим именем. Вот почему, если вы назовете элемент управления Button
Button1
, вы можете использовать поле Button1
для ссылки на него.
Когда вы создаете элементы управления во время выполнения, конечно, поля нет Вы можете использовать это специальное поле для ссылки на него. Это зависит от вас, чтобы получить ссылку на этот элемент управления, где бы вы ни поместили его, когда вы создали его. Где это зависит от вас, но, если вы добавили его в коллекцию Controls
контейнера, это один из вариантов его возврата. Если вы установите свойство Name
, вы можете проиндексировать коллекцию Controls
с этим именем, чтобы получить его, например,
Dim myButton = DirectCast(myFlowLayoutPanel.Controls("Button" & i), Button)
. Также могут быть другие способы получения этой ссылки. Например, если вы создали свой List(Of Button)
и задали Tag
каждого Button
числом, вы можете сделать это:
Dim myButton = myButtonList.Single(Function(btn) CInt(btn.Tag) = i)