Получить кнопку из своего TabIndex?

#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.