14

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

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


编辑
换句话说,我希望能够在表单出现时直接在文本框中输入内容,而无需手动选择它或手动选择它。

4

8 回答 8

39

因为您想在表单加载时设置它,所以您必须先 .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
于 2013-04-30T07:47:37.220 回答
12

我认为您正在寻找的是:

textBox1.Select();

在构造函数中。(这是在 C# 中。也许在 VB 中是一样的,但没有分号。)

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

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

于 2013-04-30T07:29:52.937 回答
9
Private Sub Form1_Shown(sender As Object, e As EventArgs) Handles Me.Shown
    TextBox1.Select()
End Sub
于 2013-04-30T12:04:13.797 回答
4

使用焦点方法

  Private Sub frmTest_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
       yourControl.Focus()
    End Sub
于 2013-04-30T07:17:53.710 回答
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
于 2013-04-30T07:16:49.077 回答
1

要设置焦点,

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

通过设置 TabIndex

Me.TextBox1.TabIndex = 0
于 2013-04-30T07:15:55.190 回答
1

我认为要使用的适当事件处理程序是“显示”。而且您只需要关注相应的文本框。

Private Sub Me_Shown(sender As Object, e As EventArgs) Handles MyBase.Shown
    myTextbox.Focus()
End Sub
于 2021-04-27T08:45:19.190 回答
0

创建一个文本框:

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

focus() ---> 用于设置文本框控件的输入焦点

tb.focus()
于 2016-09-27T09:22:23.587 回答