VB.NET 如何将光标方向更改为从右到左或从左到右?

VB.NET How can I change cursor direction to right-to-left or left-to-right?

我有一个包含 2 个富文本框的 vb.net 表单。第一个英文富文本框,第二个阿拉伯文富文本框。如何改变光标的方向,使其在输入阿拉伯语richtextbox时向右转,输入英文richtextbox时向左转??

所有控件都有一个名为 RightToLeft 的 属性,用于指示文本输入的方向。

此处如docs所述:

Gets or sets a value indicating whether control's elements are aligned to support locales using right-to-left fonts.

对于您的 RichTextBoxes,要么在表单编辑器的属性 window 中设置 属性,要么像这样以编程方式设置:

EnglishRichTextBox.RightToLeft = RightToLeft.No
ArabicRichTextBox.RightToLeft = RightToLeft.Yes

如果 RichTextBoxes 专用于英语或阿拉伯语输入,您应该在设计时设置它们。在运行时(在代码中)更改值有一个副作用,在文档中有详细说明:

If the value of the RightToLeft property is changed at run time, only raw text without formatting is preserved.

也许您的意思是在输入 RichTextBox 控件时更改输入语言?如果这就是您所追求的,那么您需要处理每个 RTBEnter 事件以通过 InputLanguage class 切换语言。 class 具有静态属性以获取已安装的输入语言、它们的文化、默认和当前输入语言。

为每个 RTB 添加 Enter 事件处理程序并按如下方式处理它们:

英语 RTB

Private Sub enRTB_Enter(sender As Object, e As EventArgs) Handles enRTB.Enter

    Dim lang = InputLanguage.InstalledInputLanguages.
        Cast(Of InputLanguage).
        FirstOrDefault(Function(x) x.Culture.TwoLetterISOLanguageName = "en")

    If lang IsNot Nothing Then InputLanguage.CurrentInputLanguage = lang
End Sub

阿拉伯语 RTB

Private Sub arRTB_Enter(sender As Object, e As EventArgs) Handles arRTB.Enter

    Dim lang = InputLanguage.InstalledInputLanguages.
        Cast(Of InputLanguage).
        FirstOrDefault(Function(x) x.Culture.TwoLetterISOLanguageName = "ar")

    If lang IsNot Nothing Then InputLanguage.CurrentInputLanguage = lang
End Sub