如何在文本框中按Tab键时触发事件?

时间:2012-08-15 12:18:48

标签: vb.net winforms events

对于我正在处理的当前应用程序,我想使用我自己的自定义控件来模拟一个组合框,因为我希望它是多列并具有一些附加功能。我正在使用文本框和datagridview来执行此操作。

我想复制可以与常规组合框一起使用的建议/追加。我的工作很棒。用户可以开始输入,获取建议列表,并可以使用向上和向下键滚动条目。

我已经捕获了回车键以将所选行作为值。这很有效,但我也想捕获tab键并执行相同操作,就像已经嵌入组合框控件中的功能一样。

问题在于,显然vb.net使用tab键来更改所选控件,然后在我调用子例程从datagridview中获取所选行之前触发。我希望能够取消控件中的标签,或者至少找到一种方法来解雇我的代码。

提前致谢。

2 个答案:

答案 0 :(得分:6)

TextBox还有AcceptsTab属性,可在Multiline = True时使用。

根据这些条件,您现在可以查看是否按下了Tab键:

Private Sub TextBox1_KeyDown(sender As Object, e As KeyEventArgs) _
                             Handles TextBox1.KeyDown
  If e.KeyCode = Keys.Tab Then
    e.SuppressKeyPress = True
    'do something
  End If
End Sub

答案 1 :(得分:-2)

问题是在这种情况下,按下TAB键将忽略该输入元素 你需要绑定keydown事件 以及像这样的回调函数

   var code = e.keyCode || e.which;
   if (code == '9') {
     alert('Tab');
     return false;
   }