从TabIndex获取Button?

问题描述

假设我在一个面板中有50个按钮。在设计期间,将为这些按钮中的每个按钮自动分配一个TabIndex编号。 现在,我要获取的是TabIndex为37的特定按钮,并将其输入到需要按钮作为参数的函数PerformButtonFunction(Button)中。

类似这样的东西:

PerformButtonFunction(Button whose TabIndex is 37)

那它怎么做呢?

请注意:索引不必每次都为37。该指数是通过一些计算获得的。同样,索引也不是按钮名称的一部分。我的意思是索引为37的按钮未命名为“ Button37”。

解决方法

Dim btn = Me.Controls.OfType(Of Button)().FirstOrDefault(Function(b) b.TabIndex = 37)

First 部分允许包含多个Buttons的{​​{1}},而 OrDefault 部分不允许包含多个TabIndex。 显然,您可以在该代码中使用变量代替文字Integer

,

您可以在动态创建按钮时设置按钮名称。之后 你会得到那个名字的按钮。

,
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

另一种可能的解决方案是使用@jmcilhinney已经建议的TabIndex。