将焦点设置为文本框控件

时间:2013-04-30 07:12:59

标签: vb.net winforms

如果我想在首次打开表单时将焦点设置在文本框上,那么在设计时,我可以将它的tabOrder属性设置为0,并确保没有其他表单控件的tabOrder为0。

如果我想在运行时使用代码获得相同的结果,我该如何处理?
是否有使用tabOrder的替代方案?
我假设任何运行时代码都在表单的构造函数或其onload事件处理程序中?


修改
换句话说,我希望能够在表单出现后直接输入文本框,而无需手动选项卡,或手动选择它。

8 个答案:

答案 0 :(得分:32)

因为你想在表单加载时设置它,你必须首先.Show()表单才能调用.Focus()方法。在您显示表单

之前,表单无法在Load事件中获得焦点
Private Sub RibbonForm1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    Me.Show()
    TextBox1.Select()
End Sub

答案 1 :(得分:12)

我认为您正在寻找的是:

textBox1.Select();

在构造函数中。 (这是在C#中。也许在VB中可能是相同但没有分号。)

来自http://msdn.microsoft.com/en-us/library/system.windows.forms.control.focus.aspx

  

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

答案 2 :(得分:9)

Private Sub Form1_Shown(sender As Object, e As EventArgs) Handles Me.Shown
    TextBox1.Select()
End Sub

答案 3 :(得分:4)

使用Focus方法

  Private Sub frmTest_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
       yourControl.Focus()
    End Sub

答案 4 :(得分:2)

非常简单:

对于标签控件,您需要处理 _SelectedIndexChanged 事件:

Private Sub TabControl1_SelectedIndexChanged(sender As Object, e As System.EventArgs) _
  Handles TabControl1.SelectedIndexChanged

If TabControl1.SelectedTab.Name = "TabPage1" Then
    TextBox2.Focus()
End If
If TabControl1.SelectedTab.Name = "TabPage2" Then
    TextBox4.Focus()
End If

答案 5 :(得分:1)

设置焦点,

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
    TextBox1.Focus()
End Sub

通过

设置TabIndex
Me.TextBox1.TabIndex = 0

答案 6 :(得分:1)

我认为要使用的适当事件处理程序是“Shown”。 并且您只需要聚焦相应的文本框即可。

TIndex

答案 7 :(得分:0)

创建一个文本框:

 <TextBox Name="tb">
 ..hello..
</TextBox>

focus()---&gt;它用于将输入焦点设置为文本框控件

tb.focus()