Поддержка двунаправленного письма для приложений Windows Forms
Обновлен: Ноябрь 2007
Visual Studio можно использовать для создания приложений Windows, поддерживающих языки с двунаправленным (справа налево) письмом, например арабский и иврит. Эта поддержка распространяется на стандартные формы, диалоговые окна, MDI-формы и все элементы управления, с которыми можно работать в этих формах, то есть на все объекты в пространстве имен Control.
Поддержка языка и региональных параметров
Параметры "Culture" и "UICulture" определяют способы работы приложения с датами, значениями времени, валютами и другими данными. Параметры "Culture" и "UICulture" для языков с двунаправленным письмом поддерживаются так же, как и для любых других языков. Дополнительные сведения см. в разделах Классы, соответствующие определенному языку и региональным параметрам, для глобальных форм Windows Forms и Web Forms и Классы, соответствующие определенному языку и региональным параметрам, для глобальных форм Windows Forms и Web Forms и Классы, соответствующие определенному языку и региональным параметрам, для глобальных форм Windows Forms и Web Forms.
Свойства RightToLeft и RightToLeftLayout
Базовый класс Control, от которого наследуются формы, включает свойство RightToLeft, которое можно задать, чтобы изменить порядок чтения формы и ее элементов управления. Если задать свойство формы RightToLeft, то элементы управления в этой форме по умолчанию унаследуют от нее данное свойство. Тем не менее, для большинства элементов управления свойство RightToLeft можно задавать индивидуально. Дополнительные сведения см. в разделах Практическое руководство. Отображение текста справа налево в формах Windows Forms с целью глобализации и Практическое руководство. Отображение текста справа налево в формах Windows Forms с целью глобализации и Практическое руководство. Отображение текста справа налево в формах Windows Forms с целью глобализации.
Результат установки свойства RightToLeft зависит от конкретного элемента управления. В некоторых элементах управления, например в Button, TreeView и ToolTip, это свойство устанавливает только порядок чтения. В других элементах управления свойство RightToLeft изменяет и порядок чтения, и внешний вид элемента. К таким элементам управления относятся RadioButton, ComboBox и CheckBox. Для других элементов управления применение свойства RightToLeftLayout требуется для зеркального отражения расположения справа налево. В следующей таблице приведены подробные сведения о том, к какому результату приводит применение свойств RightToLeft и RightToLeftLayout в отдельных элементах управления Windows Forms.
Элемент управления/компонент |
Эффект свойства RightToLeft |
Эффект свойства RightToLeftLayout |
Требуется ли отражение |
---|---|---|---|
Устанавливает порядок чтения справа налево. Обращает TextAlign, ImageAlign и TextImageRelation |
Эффект отсутствует |
Нет |
|
Флажок отображается справа от текста |
Эффект отсутствует |
Нет |
|
Все флажки отображаются справа от текста |
Эффект отсутствует |
Нет |
|
Не затрагивается; зависит от языка операционной системы |
Эффект отсутствует |
Нет |
|
Позиции поля со списком выравниваются по правому краю |
Эффект отсутствует |
Нет |
|
Выравнивание по правому краю, порядок чтения справа налево |
Эффект отсутствует |
Нет |
|
Выравнивание по правому краю, порядок чтения справа налево |
Эффект отсутствует |
Нет |
|
Устанавливает порядок чтения справа налево и меняет макет элемента управления |
Эффект отсутствует |
Нет |
|
Не затрагивается; зависит от языка операционной системы |
Отражает элемент управления |
Да |
|
Кнопки со стрелками вверх и вниз расположены по левому краю |
Эффект отсутствует |
Нет |
|
Не поддерживается |
Эффект отсутствует |
Нет |
|
Зависит от языка операционной системы |
Эффект отсутствует |
Нет |
|
Устанавливает порядок чтения справа налево и обращает полосы прокрутки |
Отражает форму |
Да |
|
Заголовок выравнивается по правому краю. Дочерние элементы управления могут наследовать это свойство. |
Используйте TableLayoutPanel в элементе управления для поддержки отражения справа налево |
Нет |
|
Начинается с ползунка полосы прокрутки, выровненного по правому краю |
Эффект отсутствует |
Нет |
|
Не требуется |
Эффект отсутствует |
Нет |
|
Выравнивание по правому краю. Обращает TextAlign и ImageAlign |
Эффект отсутствует |
Нет |
|
Выравнивание по правому краю. Обращает TextAlign и ImageAlign |
Эффект отсутствует |
Нет |
|
Позиции выравниваются по правому краю |
Эффект отсутствует |
Нет |
|
Порядок чтения справа налево; элементы остаются выровненными по левому краю |
Отражает элемент управления |
Да |
|
Выравнивание по правому краю и порядок чтения справа налево во время выполнения (но не во время разработки) |
Эффект отсутствует |
Нет |
|
Отображает текст справа налево. |
Эффект отсутствует |
Нет |
|
Не затрагивается; зависит от языка операционной системы |
Отражает элемент управления |
Да |
|
Не поддерживается |
Не поддерживается |
Нет |
|
Кнопки со стрелками вверх и вниз выравниваются по левому краю |
Эффект отсутствует |
Нет |
|
Не затрагивается; зависит от языка операционной системы |
Эффект отсутствует |
Нет |
|
Не затрагивается; зависит от языка операционной системы |
Эффект отсутствует |
Нет |
|
Дочерние элементы управления могут наследовать это свойство. |
Используйте TableLayoutPanel в элементе управления для поддержки порядка справа налево |
Да |
|
Не поддерживается |
Эффект отсутствует |
Нет |
|
Не затрагивается; зависит от языка операционной системы |
Эффект отсутствует |
Нет |
|
Вертикальная полоса прокрутки выравнивается по левому краю, горизонтальная полоса прокрутки начинается слева |
Эффект отсутствует |
Нет |
|
Не поддерживается |
Не поддерживается |
Нет |
|
Не затрагивается данным свойством |
Отражает элемент управления |
Да |
|
Переключатель отображается справа от текста |
Эффект отсутствует |
Нет |
|
Компоненты элемента управления, содержащие текст, отображаются справа налево, с порядком чтения справа налево |
Эффект отсутствует |
Нет |
|
Не затрагивается; зависит от языка операционной системы |
Эффект отсутствует |
Нет |
|
Макет панели обращается; вертикальная полоса прокрутки отображается слева; горизонтальная полоса прокрутки начинается справа |
Используйте TableLayoutPanel, чтобы отразить порядок дочерних элементов управления |
Нет |
|
Не поддерживается |
Эффект отсутствует |
Нет |
|
Не поддерживается; вместо этого используйте StatusStrip |
Эффект отсутствует; вместо этого используйте StatusStrip |
Нет |
|
Не затрагивается данным свойством |
Отражает элемент управления |
Да |
|
Текст с порядком чтения справа налево отображается справа налево. |
Эффект отсутствует |
Нет |
|
Не требуется |
Не требуется |
Нет |
|
Не затрагивается данным свойством; вместо этого используйте ToolStrip |
Эффект отсутствует; вместо этого используйте ToolStrip |
Да |
|
Устанавливается порядок чтения справа налево |
Эффект отсутствует |
Нет |
|
Прокрутка или отслеживание начинается с правого края; если для свойства Orientation задана вертикальная ориентация, счетчик тактов находится справа |
Эффект отсутствует |
Нет |
|
Устанавливается только порядок чтения справа налево |
Отражает элемент управления |
Да |
|
Вертикальная полоса прокрутки отображается слева; ползунок горизонтальной полосы прокрутки располагается справа |
Прямая поддержка отсутствует; используйте TableLayoutPanel |
Нет |
|
Отображается по левому, а не по правому краю прокручиваемых элементов управления |
Эффект отсутствует |
Нет |
Кодировка
Windows Forms поддерживает Юникод, поэтому при создании приложений с двунаправленным письмом можно включить любой набор знаков. Тем не менее, не все элементы управления для форм Windows Forms поддерживают Юникод на всех платформах. Дополнительные сведения см. в разделе Кодировки и глобализация форм Windows Forms.
GDI+
Для рисования текста с порядком чтения справа налево можно использовать GDI+. Метод DrawString, используемый для рисования текста, поддерживает параметр StringFormat, для которого можно задать значение DirectionRightToLeft перечисления StringFormatFlags, чтобы обратить точку ввода для текста.
Общие диалоговые окна
Управлением системными инструментами, например диалоговым окном открытия файла, осуществляется ОС Windows. Эти инструменты наследуют языковые параметры от операционной системы. Если пользователь работает в версии Windows c правильно заданными языковыми параметрами, то эти диалоговые окна будут правильно отображать текст на языках с двунаправленным письмом.
Аналогичным образом, окна сообщения управляются операционной системой и поддерживают двунаправленный текст. Надписи на кнопках в окнах сообщений зависят от текущих языковых параметров. По умолчанию в окнах сообщений не используется порядок чтения справа налево, но можно задать параметр, который изменит порядок чтения при отображении такого окна. Дополнительные сведения см. в разделе Практическое руководство. Создание окон сообщений для форм Windows Forms с двунаправленным письмом.
RightToLeft, Scrollbars и ScrollableControl
В данный момент в Windows Forms существует ограничение, препятствующее правильной работе всех классов, производных от ScrollableControl, если включено свойство RightToLeft, а для свойства AutoScroll задано значение Yes. Предположим, например, что в форму помещен такой элемент управления, как Panel, или класс контейнера, производный от Panel (такой как FlowLayoutPanel или TableLayoutPanel). Если установить для свойства AutoScroll контейнера значение Yes, а затем установить для свойства Anchor одного или нескольких элементов управления внутри контейнера значение Right, то полоса прокрутки отображаться не будет. Класс, производный от ScrollableControl, действует так, как если бы для свойства AutoScroll было установлено значение No.
В настоящее время единственным способом устранить эту проблему является размещение класса ScrollableControl внутри другого класса ScrollableControl. Например, если требуется работать с объектом TableLayoutPanel в такой ситуации, можно поместить его внутрь элемента управления Panel и установить для свойства AutoScroll элемента Panel значение Yes.
Отражение
Отражением называется обращение размещение элементов пользовательского интерфейса таким образом, чтобы они следовали справа налево. Например, в отраженной форме Windows кнопки "Свернуть", "Развернуть" и "Закрыть" в строке заголовка находятся слева, а не справа.
Если для свойства RightToLeft формы или элемента управления установлено значение true, то порядок чтения элементов формы изменяется на противоположный, однако компоновка формы не меняется на зеркальную, т. е. отражение не происходит. Например, задание этого свойства не перемещает кнопки Свернуть, Развернуть и Закрыть в строке заголовка формы в левую часть формы. Аналогичным образом, для некоторых элементов управления, например TreeView, отражение необходимо, чтобы внешний вид элемента был адекватен для арабского языка или иврита. Эти элементы управления можно отразить с помощью свойства RightToLeftLayout.
Можно создать отраженные версии следующих элементов управления:
Некоторые элементы управления закрыты. Следовательно, произвести от них новый элемент управления невозможно. В частности, закрыты элементы управления ImageList и ProgressBar.
См. также
Основные понятия
Поддержка двунаправленного письма в веб-приложениях ASP.NET