KeyDown和KeyUp组合键(例如Ctrl + A)KeyUp起作用,而不是KeyDown

时间:2018-07-12 13:56:00

标签: vb.net richtextbox keydown keyup

我正在尝试捕获Ctrl+A上的Ctrl+CKeyDown RichTextBox组合。

我的KeyDown事件没有从组合中获得e.KeyCode'A'或'C'(例如Ctrl+A

KeyDown事件被触发,但仅捕获e.Control键,而不捕获'A'或'C'等的e.KeyCode键。

我对SO进行了广泛的搜索,尽管存在许多类似的问题,但没有一种解决方案适合我。记事本,Word等应用程序使用MouseDown事件,但我看不到为什么不能这样做。

我真的希望它可以在KeyDown事件上起作用,以使最终用户体验与其他应用程序保持一致。我可以将e.KeyCode添加到KeyPress之后的KeyDown事件中,但是有很多SO帖子告诉人们避免KeyPress事件。

KeyDown似乎可以在按下Shift键的情况下工作,但不能使用ControlCtrl)键。

KeyUp事件起作用:

Private Sub rtbMain_KeyUp(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles rtbMain.KeyUp

    If e.KeyCode = Keys.A AndAlso (e.Control OrElse e.Shift) Then
        'Stop
        rtbMain.SelectAll()
    ElseIf e.KeyCode = Keys.C AndAlso e.Modifiers = Keys.ControlKey Then
        'Stop
        rtbMain.SelectedRtf = Clipboard.GetText(TextDataFormat.Rtf)
    End If

    If (e.KeyCode = Keys.A AndAlso e.Modifiers = Keys.Control) Then
        'Stop
        rtbMain.SelectAll()
    ElseIf (e.KeyCode = Keys.C AndAlso e.Modifiers = Keys.Control) Then
        'Stop
        rtbMain.SelectedRtf = Clipboard.GetText(TextDataFormat.Rtf)
    End If

End Sub

KeyDown事件没有:

Private Sub rtbMain_KeyDown(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles rtbMain.KeyDown

    If e.KeyCode = Keys.A AndAlso (e.Control OrElse e.Shift) Then
        'Stop
        rtbMain.SelectAll()
    ElseIf e.KeyCode = Keys.C AndAlso e.Modifiers = Keys.ControlKey Then
        'Stop
        rtbMain.SelectedRtf = Clipboard.GetText(TextDataFormat.Rtf)
    End If

    If (e.KeyCode = Keys.A AndAlso e.Modifiers = Keys.Control) Then
        'Stop
        rtbMain.SelectAll()
    ElseIf (e.KeyCode = Keys.C AndAlso e.Modifiers = Keys.Control) Then
        'Stop
        rtbMain.SelectedRtf = Clipboard.GetText(TextDataFormat.Rtf)
    End If

End Sub

0 个答案:

没有答案