这是一个奇怪的案例,但我什至不知道如何调试这个问题。我的程序需要两种输入语言(英语和阿拉伯语),当我第一次运行程序并按任意英文字母然后按 Alt+shift 切换语言时它不起作用!然后当我按 Ctrl+shift 将方向切换到 RightToLeft 然后再次尝试 Alt+shift 它可以工作!并且在那之后仍然适用于所有情况。
实际上可能是我的代码导致了这个问题,但我无法调试它!我试过了。
注意:在没有代码的新 RichTextBox 中,它通常需要 Alt+shift 但它不接受 Ctrl+shift 所以我添加了 if 语句以使 ctrl+shift 工作但这不是问题的原因,因为我试图删除它并且问题依然存在
注意2:我不知道是否更改selection start
并selection length
导致问题,因为我在 myFunction 中对它们进行了很多更改,但在函数结束时将它们返回到以前的状态。
我的代码使 ctrl+shift 工作
Private Sub RichTextBox_KeyUp(sender As Object, e As KeyEventArgs) Handles RichTextBox.KeyUp
Try
' if Ctrl and Shift are pressed then change text-align ( shift+ctrl OrElse ctrl+shift)
If (e.Modifiers = Keys.Shift OrElse e.Modifiers = Keys.ShiftKey) AndAlso
(e.KeyCode = Keys.ControlKey OrElse e.KeyCode = Keys.Control) OrElse _
_
((e.Modifiers = Keys.Control OrElse e.Modifiers = Keys.ControlKey) AndAlso
(e.KeyCode = Keys.Shift OrElse e.KeyCode = Keys.ShiftKey)) Then
If RichTextBox.RightToLeft = Windows.Forms.RightToLeft.Yes Then ' if align is rightToLeft
RichTextBox.RightToLeft = Windows.Forms.RightToLeft.No ' then make it LeftToRight
Else
RichTextBox.RightToLeft = Windows.Forms.RightToLeft.Yes
End If
RichTextBox.SelectionStart = RichTextBox.TextLength
End If
' Calling subroutine myFunction
Call myFunction()
Catch ex As Exception
End Try
End Sub