对于我正在处理的当前应用程序,我想使用我自己的自定义控件来模拟一个组合框,因为我希望它是多列并具有一些附加功能。我正在使用文本框和datagridview来执行此操作。
我想复制可以与常规组合框一起使用的建议/追加。我的工作很棒。用户可以开始输入,获取建议列表,并可以使用向上和向下键滚动条目。
我已经捕获了回车键以将所选行作为值。这很有效,但我也想捕获tab键并执行相同操作,就像已经嵌入组合框控件中的功能一样。
问题在于,显然vb.net使用tab键来更改所选控件,然后在我调用子例程从datagridview中获取所选行之前触发。我希望能够取消控件中的标签,或者至少找到一种方法来解雇我的代码。
提前致谢。
答案 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;
}