我有一个通用的消息框,我们有几个面板,我们在运行时添加控件。
在我的表单中,我已经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
此处我将OK
,OK
和{{1}}按钮的TabIndex设置为0。
请建议如何关注{{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