#.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);
Результат: