3

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

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

我已经捕获了回车键以将所选行作为值。这工作得很好,但我也想捕获 tab 键并做同样的事情,就像已经嵌入组合框控件的功能一样。

问题是,显然 vb.net 使用 tab 键来更改选定的控件,并且在我可以调用我的子例程从我的 datagridview 中获取选定的行之前触发。我希望能够取消控制选项卡,或者至少找到一种方法在它之前触发我的代码。

提前致谢。

4

2 回答 2

6

TextBox 也有一个AcceptsTabMultiline = 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
于 2012-08-15T12:25:35.783 回答
-2

问题是在这种情况下,按 TAB 键将失去对需要绑定 keydown 事件和回调函数的输入元素的关注

   var code = e.keyCode || e.which;
   if (code == '9') {
     alert('Tab');
     return false;
   }
于 2012-08-15T12:26:41.867 回答