Enter和Tab将焦点发送到下一个文本框

时间:2016-01-07 13:35:03

标签: vb.net winforms textbox

我通过继承以下代码中显示的系统文本框创建了一个类。

Public Class textboxex

Inherits TextBox
Private Sub TextBoxEx_Return(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown

    If e.KeyCode = Keys.Enter Then
        SendKeys.Send("{TAB}")
        Me.Text = Me.Text.ToUpper  'To change the text to upper case when it leaves focus.(working fine)
    End If
End Sub

现在问题是当我按Tab键时,它不会进入if条件 可能它不会因为我没有给出tab键的条件。

但是在我通过添加e.keycode = keys.Tab并按Tab键更改了if条件之后,它不会执行字母的大写但输入就可以了。更新后的代码如下所示。

If e.KeyCode = Keys.Enter or e.KeyCode = Keys.Tab Then
        SendKeys.Send("{TAB}")
        Me.Text = Me.Text.ToUpper 'doesn't work when tab is pressed | enter works fine
    End If

所以这是我的问题,帮助我plox ...... !!!!!!!

1 个答案:

答案 0 :(得分:1)

使 Enter Tab 一样工作

您可以覆盖ProcessCmdKey方法并检查密钥是否为 Enter 然后,发送Tab键或使用SelectNextControl,将焦点移至下一个控件:

Public Class MyTextBox
    Inherits TextBox
    Protected Overrides Function ProcessCmdKey(ByRef msg As Message, keyData As Keys) _
        As Boolean
        If (keyData = Keys.Enter) Then
            SendKeys.Send("{TAB}")
            'Parent.SelectNextControl(Me, True, True, True, True)
            Return True
        End If
        Return MyBase.ProcessCmdKey(msg, keyData)
    End Function
End Class