Смешанный текст LTR и RTL в элементе управления текстовым полем

#.net #winforms

#.net #winforms

Вопрос:

У меня есть элемент управления простым текстовым полем в моем приложении WinForm, и я ввожу строку со смешанным текстом на английском и фарси (смесь LTR и RTL). Когда для свойства TextBox RightToLeft установлено значение Yes, оно отлично работает в пользовательском интерфейсе, как и ожидалось, но когда я получаю свойство Text текстового поля, строка не соответствует тому, что показывает элемент управления, и она совершенно другая / неправильная.

Вот скриншот того, как текст выглядит внутри элемента управления текстовым полем (справа) и что возвращает свойство Text (показано в окне сообщения).

введите описание изображения здесь

Как я могу это исправить? Я ожидаю, что свойство Text вернет то же самое, что отображается в пользовательском интерфейсе.

Комментарии:

1. Свойство Text не заботится о порядке справа налево, это чисто артефакт рендеринга. Вы получаете неожиданный вывод из окна сообщения, потому что оно отображается слева направо.

Ответ №1:

Вы могли бы перейти MessageBoxOptions.RtlReading | MessageBoxOptions.RightAlign к options аргументу MessageBox.Show , чтобы окно сообщения выравнивало текст по правому краю, а также отображало все окно сообщения с его текстом справа налево:

 MessageBox.Show("تست English-mixed جمله ...",
                "عنوان Title",
                MessageBoxButtons.OK,
                MessageBoxIcon.None,
                MessageBoxDefaultButton.Button1,
                MessageBoxOptions.RtlReading | MessageBoxOptions.RightAlign);
  

Результат:
Пример вывода