VB.NET 文本框 KeyDown 事件未触发

标签 vb.net events textbox keydown

所以,

我在选项卡控件页面上有一个文本框,当有人跳出该文本框时,它应该移动到下一个选项卡。在我将表单从用户控件切换到实际表单之前,这非常有效。此更改并未更改实际代码。

所以现在,我已经尝试了一切。我将文本框设置为 AcceptTab = True,并且将 KeyPreview = False (因为如果表单在文本框之前获取事件,我假设它会把事情弄乱)。

这是我的文本框代码:

 Private Sub txtMsgDTG_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs) Handles txtMsgDTG.KeyDown

    'check for tabbed out
    If e.KeyCode = Keys.Tab Then
        'If the user tabs into this field after filling out the necessary fields ...
        If txtMsgDTG.Text = String.Empty Then
            'If the user left the field BLANK ...

            'Move to next page:
            TabControl1.TabPages(0).Enabled = True
            TabControl1.TabPages(1).Enabled = True
            TabControl1.TabPages(2).Enabled = False
            TabControl1.TabPages(3).Enabled = False
            TabControl1.TabPages(4).Enabled = False
            TabControl1.SelectedIndex = 1

        Else
            'If the user did NOT leave the field blank ...

            'validate message DTG
            Dim dtgCheck As String
            dtgCheck = ValidateDTG(txtMsgDTG.Text)
            If dtgCheck <> "valid" Then
                MsgBox(dtgCheck)
            Else
                'Move to next page:
                TabControl1.TabPages(0).Enabled = True
                TabControl1.TabPages(1).Enabled = True
                TabControl1.TabPages(2).Enabled = False
                TabControl1.TabPages(3).Enabled = False
                TabControl1.TabPages(4).Enabled = False
                TabControl1.SelectedIndex = 1

            End If

        End If

    End If


End Sub

大家有什么想法吗?

最佳答案

快速修复:

txtMsgDTG.Multiline = True

可以保留 Multiline = False 的另一个修复是订阅 TextBox 的 PreviewKeyDown 事件:

Private Sub txtMsgDTG_PreviewKeyDown(ByVal sender As Object, ByVal e As PreviewKeyDownEventArgs) Handles txtMsgDTG.PreviewKeyDown
  If e.KeyCode = Keys.Tab Then
    e.IsInputKey = True
  End If
End Sub

关于VB.NET 文本框 KeyDown 事件未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10230272/

相关文章:

c# - 一个 aspx 页面具有 utf-8 编码

jquery - 修改显示/隐藏功能只缩放宽度,不缩放高度?

c# - 如何在 C# 中定义文本框数组?

javascript - 为什么我无法按下 alt 键?

facebook - 如何创建一个没有滚动条动态增长的多行文本框?

python - 清除 Tkinter TEXT 小部件使用的 RAM

javascript - 通过分页更改表信息

xml - HtmlAgilityPack仅返回第一个匹配项

.net - VB.NET 项目属性命名空间与导入语句?

laravel - Laravel-Livewire 如何触发事件并监听它们?