当标签页首次出现时,我似乎无法将输入焦点放在文本框上(我使用的是Windows Forms,VB.NET 3.5).
我在标签页的面板上有一个文本框,我希望在标签页出现时焦点位于文本框上.我希望用户能够立即开始在聚焦文本框中键入,而无需单击文本框.我按照我想要的顺序设置制表位,文本框是第一个制表位.选项卡停止工作,除了当标签页出现时,焦点不在文本框上,即在Tab键顺序中的第一个.
在标签页的Enter事件处理程序中,我调用文本框的Focus方法,但它返回False并且什么都不做,没有错误消息.我知道我可以访问文本框,因为在代码中的同一点我可以设置文本框的文本.
如果重要,标签页的布局有点复杂:
frmFoo/TabControl1/TabPageX/Panel1/Panel2/TextBox1
Run Code Online (Sandbox Code Playgroud)
我想把重点放在TextBox1上.
Rob*_*ien 24
我假设您正在尝试在表单加载事件处理程序中设置焦点?如果是这样,您需要Me.Show()在设置焦点之前执行实际创建屏幕控制.有点像:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
Me.Show()
Application.DoEvents()
TextBox1.Focus()
End Sub
Run Code Online (Sandbox Code Playgroud)
如果您不这样做Me.Show(),则在加载事件完成之前不会显示表单.
对于选项卡控件,处理_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
Run Code Online (Sandbox Code Playgroud)
如果选择的第一个字段是选项卡控件上的文本框,您仍然需要在load事件中设置初始焦点,如上所示.
key*_*rdP 11
尝试:
Me.ActiveControl = TextBox1
Run Code Online (Sandbox Code Playgroud)
要么
TextBox1.Select()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
51925 次 |
| 最近记录: |