输入标签页时

时间:2015-04-27 13:33:23

标签: vb.net

我有一个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

3 个答案:

答案 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事件。

enter image description here

答案 1 :(得分:0)

好的!我们假设你有TabControl1
使用TabItem1和TabControlPanel1拖动TextBox1 和TabItem2和TabControlPanel2拖动TextBox2的文件

将其粘贴到.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 .. 。给定数字,光标肯定会聚焦在第二个输入框。如果其他控件(如图像或网格)的编号低于输入框,那么肯定没有聚焦框。

自动生成标签索引。这个数字取决于谁先创建谁而不是谁。这在我的工作,如果这也适用于您的问题...请告诉我。 :)