如何在WinForms中运行时为Button设置tabIndex?

时间:2015-08-30 10:31:52

标签: vb.net winforms

我有一个通用的消息框,我们有几个面板,我们在运行时添加控件。

在我的表单中,我已经pnlBottom pnlButtons与其他控件一起使用了OK

现在,在运行时,我正在pnlButtons添加pnlBottom按钮,TabIndex就在Designer.vb。我没有为OK文件中的任何控件设置For Each control As Control In Me.Controls If TypeOf (control) Is Panel Then Dim pnlBottons As Panel = CType(control, Panel) If pnlBottons.Name = "pnlBottom" Then For Each ctrl As Control In control.Controls Dim pnlButtons As Panel = CType(ctrl, Panel) If pnlButtons.Name = "pnlButtons" Then For Each ctrlbtn As Control In ctrl.Controls If TypeOf (ctrlbtn) Is Button Then Dim textBox As Button = CType(ctrlbtn, Button) textBox.Parent.Parent.TabIndex = 0 textBox.Parent.TabIndex = 0 textBox.TabIndex = 0 End If Next End If Next End If End If Next

我正在尝试使用下面的代码将注意力集中在pnlBottom按钮上,但它不起作用。

pnlButtons

此处我将OKOK和{{1}}按钮的TabIndex设置为0。

请建议如何关注{{1}}按钮。

1 个答案:

答案 0 :(得分:1)

您可以set the focus on a control during Form Load event使用以下方法之一:

1-控制。选择方法

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Mybase.Load
    Me.OKButton.Select()
End Sub
  

Focus是一种主要用于自定义控制的低级方法   作者。相反,应用程序员应该使用Select方法   或子控件的ActiveControl属性,或Activate   形式的方法。

2- Form.ActiveControl属性

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Mybase.Load
    Me.ActiveControl = Me.OKButton
End Sub

3- Control.Focus方法

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Mybase.Load
    Me.Show()
    Me.OKButton.Focus()
End Sub

我们称之为Me.Show()的原因是将表单设置为true。根据:

  

您可以在窗体的Load事件中使用Control.Focus方法   仅在窗体的Visible属性之后将焦点设置在控件上   设置为True。

如果您无法使用Me.OKButton,您可以找到您想要的控件:

Dim control = Me.Controls.Find("OKButton", True).FirstOrDefault()
If Not control Is Nothing Then
    control.Select() 'or other stuff
End If