我正在尝试捕获Ctrl+A
上的Ctrl+C
和KeyDown
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
键的情况下工作,但不能使用Control
(Ctrl
)键。
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