如何判断在TextBox中按Tab键的时间

时间:2014-03-05 17:37:17

标签: vb.net winforms

如何判断某个文本框中是否按下了Tab键。

我尝试将AcceptsTab属性设置为true并创建一个处理texstboxname.KeyPress事件的函数,但是当我在内部选项卡时,它只是开箱即用,而不是点击我的事件。 (普通键可以触发我的事件,但是Tab甚至不会触发它)

2 个答案:

答案 0 :(得分:4)

Multiline属性也必须为true。

From MSDN(以粗体强调)

  

获取或设置一个值,指示是否在多行文本框控件中按TAB键在控件中键入TAB字符,而不是将焦点移动到Tab键顺序中的下一个控件。

所以将Multiline属性设置为true。

正如MiniTech所指出的,KeyDown更易于处理,因为它为您提供e.KeyCode属性,而KeyPress事件仅提供e.KeyChar属性。

Private Sub TextBox1_KeyDown(sender As Object, e As KeyEventArgs) _
                             Handles TextBox1.KeyDown
  If e.KeyCode = Keys.Tab Then
    'user pressed the Tab key...
  End If
End Sub

答案 1 :(得分:2)

似乎你可以另外

  1. 在TextBox上启用multiline属性
  2. 您可以先在IsInputKeyKeydown事件之前覆盖Keypress
    • 要做到这一点,你可以从TextBox派生一个类并在那里进行ovverride(如Hans Passat建议的那样)
    • 或者您也可以处理PreviewKeyDown事件,并将IsInputKey提取为真。
  3. 我使用了选项二的第二部分,因此我不必担心multiline属性正在运行,并且可以将我的代码保留为keypress事件

        Private Sub txtEntryBar_PreviewKeyDown(sender As Object, e As PreviewKeyDownEventArgs) Handles txtEntryBar.PreviewKeyDown
            If e.KeyData = Keys.Tab Then
                e.IsInputKey = True
            End If
        End Sub
    

    参考:http://www.vbforums.com/showthread.php?670904-Detecting-when-the-tab-key-is-pressed-in-a-textbox&p=4124911&viewfull=1#post4124911