我有一个tabcontrol。在加载时,我可以根据需要强制将焦点放到文本框中。如果用户打开第二个选项卡,则无法将焦点自动恢复到所需的文本框。
我试过了: tabpage1.entering tabpage1.validated tabpage1.gotfocus tabcontrol1.selectedindexchanged
对我来说很奇怪的是,如果用户进入第二个标签页然后返回,那么getfocus事件显然不会触发第一个标签页吗?
没有运气。任何想法都会很棒
以下是我尝试过的代码示例..
Private Sub TabPage1_Click(sender As Object, e As System.EventArgs) Handles TabPage1.Click
TB_Input.Clear()
TB_Input.Focus()
End Sub
答案 0 :(得分:1)
使用TabControl.SelectedIndexChanged
事件,尝试这样的事情......
Private Sub TabControl1_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles TabControl1.SelectedIndexChanged
If (TabControl1.SelectedIndex > -1) Then
If TabControl1.SelectedIndex = 0 Then ' First tab
TextBox2.Focus()
ElseIf TabControl1.SelectedIndex = 1 Then ' Second tab
TextBox3.Focus()
End If
End If
End Sub
事件为我开火。在Visual Studio中,确保在Designer视图中已分配了TabContol的SelectedIndexChange事件。
答案 1 :(得分:0)
将其粘贴到.vb文件中
Private Sub TabItem1_Click(sender As Object, e As EventArgs) Handles TabItem1.Click
TextBox1.Focus()
End Sub
Private Sub TabItem3_Click(sender As Object, e As EventArgs) Handles TabItem2.Click
TextBox2.Focus()
End Sub
答案 2 :(得分:0)
尝试查看文本框属性...查看 TabIndex 数字是否是所有其他标签索引中的第一个。
大多数情况下,.Focus()
仅在调用时才有效,不包括form_load。我已经尝试在表单加载时添加.Focus()但是没有工作并检查了Tab索引。例如,第一个输入框有#43,第二个输入框有#42 .. 。给定数字,光标肯定会聚焦在第二个输入框。如果其他控件(如图像或网格)的编号低于输入框,那么肯定没有聚焦框。
自动生成标签索引。这个数字取决于谁先创建谁而不是谁。这在我的工作,如果这也适用于您的问题...请告诉我。 :)