1

这是一个奇怪的案例,但我什至不知道如何调试这个问题。我的程序需要两种输入语言(英语和阿拉伯语),当我第一次运行程序并按任意英文字母然后按 Alt+shift 切换语言时它不起作用!然后当我按 Ctrl+shift 将方向切换到 RightToLeft 然后再次尝试 Alt+shift 它可以工作!并且在那之后仍然适用于所有情况。

实际上可能是我的代码导致了这个问题,但我无法调试它!我试过了。

注意:在没有代码的新 RichTextBox 中,它通常需要 Alt+shift 但它不接受 Ctrl+shift 所以我添加了 if 语句以使 ctrl+shift 工作但这不是问题的原因,因为我试图删除它并且问题依然存在

注意2:我不知道是否更改selection startselection 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
4

0 回答 0