#vb.net #variables #button #names
#vb.net #переменные #кнопка #имена
Вопрос:
Допустим, у меня есть 50 кнопок внутри панели. Каждой из этих кнопок автоматически присваивается номер TabIndex во время разработки. Теперь я хочу получить конкретную кнопку, TabIndex которой равен 37, и ввести ее в функцию PerformButtonFunction(Button)
, для которой в качестве параметра требуется кнопка.
Что-то вроде этого:
PerformButtonFunction(Button whose TabIndex is 37)
Итак, как это сделать?
Пожалуйста, обратите внимание: индекс не обязательно должен быть 37 каждый раз. Индекс получается путем некоторых вычислений. Кроме того, индекс не является частью названия кнопок. Я имею в виду, что кнопка с индексом 37 не называется как «Button37».
Комментарии:
1.
Me.Controls("Button37")
?2. Кнопка @GSerg с индексом 37 не называется как «Button37», и индекс не обязательно должен быть 37 все время. Я отредактировал вопрос, пожалуйста, просмотрите его.
Ответ №1:
Dim btn = Me.Controls.OfType(Of Button)().FirstOrDefault(Function(b) b.TabIndex = 37)
Первая часть допускает, что их несколько Buttons
, TabIndex
а часть OrDefault допускает, что их не должно быть.
Очевидно, что вы можете использовать переменную вместо литерала Integer
в этом коде.
Ответ №2:
Вы можете задать имя кнопки при динамическом создании кнопки. После этого вы получите кнопку с таким именем.
Ответ №3:
Dim index As Ineger = 1
For Each btn In Me.Controls.OfType(Of Button)()
'...
If index = 37 Then
'Call Method here
Exit For
End If
index = index 1
Next
Другим возможным решением может быть использование TabIndex, который уже предложил @jmcilhinney.