所以,
我在选项卡控件页面上有一个文本框,当有人跳出该文本框时,它应该移动到下一个选项卡。在我将表单从用户控件切换到实际表单之前,这非常有效。此更改并未更改实际代码。
所以现在,我已经尝试了一切。我将文本框设置为 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/