为什么winforms文本框偷走了焦点

时间:2013-12-03 22:16:37

标签: vb.net

我有非常基本的winforms应用程序,有两个按钮'btn_OK','btn_cancel'和'Textbox1'。 这是我的代码:

Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Me.KeyPreview = True

    btn_cancel.TabIndex = 0
    btn_OK.TabIndex = 1
    TextBox1.TabIndex = 2
    TextBox1.TabStop = False
    TextBox1.Multiline = True

    TextBox1.Text = "Quick brown fox say's hello world."
    btn_cancel.Focus()
End Sub

Private Sub btn_cancel_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles btn_cancel.KeyDown
    If e.KeyCode = Keys.Left Then
        btn_OK.Focus()
    End If
End Sub

Private Sub btn_OK_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles btn_OK.KeyDown
    If e.KeyCode = Keys.Right Then
        btn_cancel.Focus()
    End If
End Sub
End Class

想法是用文本填充文本框,将焦点设置为btn_cancel并按下键。左移将焦点移动到btn_OK。 但那不会发生。

按下左键焦点跳转到文本框而不是btn_OK,即使文本框的TabStop属性设置为false!

这是非常意外和不受欢迎的 这里发生了什么以及如何获得预期的功能?

1 个答案:

答案 0 :(得分:0)

这不是必需的,请停止尝试并使用Visual Studio选项菜单中的TabOrder页面定义自定义标签位置。

  

查看>的TabOrder

enter image description here

在示例中,聚焦的第一个按钮为“0”,如果我按右键则会聚焦“1”,如果我按下左键则会聚焦“0”,等等。