2012-08-15 88 views
3

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

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

我已经将输入键锁定为选定的行作为值。这个工作完美,但我也想陷入选项卡的键,并做同样的事情,就像已经嵌入组合框控件中的功能。

问题是,显然vb.net使用tab键来改变选定的控件,这之前我可以调用我的子程序从我的datagridview中选取的行。我希望能够取消该控件的Tab键,或者至少找到一种方法在代码执行之前触发我的代码。

在此先感谢。

回答

5

该文本框还有一个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 
+0

完美!谢谢 – GeorgeK 2012-08-15 13:29:50

-2

问题是在这种情况下,在按下TAB键将失去焦点输入元素 你需要在KEYDOWN绑定事件 并带有这样的回调函数

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

这不是一个JavaScript问题.. – stuartd 2012-08-15 12:34:34

+0

我想背后的逻辑是一样的 – derki 2012-08-15 12:40:05

相关问题