【问题标题】:How to fire an event when the tab key is pressed in a textbox?在文本框中按下 Tab 键时如何触发事件?
【发布时间】:2012-08-11 17:43:47
【问题描述】:

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

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

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

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

提前致谢。

【问题讨论】:

    标签: vb.net winforms events


    【解决方案1】:

    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
    

    【讨论】:

      【解决方案2】:

      问题是在这种情况下,按 TAB 键会失去对该输入元素的关注 你需要绑定 keydown 事件 并带有这样的回调函数

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

      【讨论】:

      • 我猜背后的逻辑是一样的
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多