Поделиться через


Поддержка двунаправленного письма для приложений 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

Требуется ли отражение

Button

Устанавливает порядок чтения справа налево. Обращает TextAlign, ImageAlign и TextImageRelation

Эффект отсутствует

Нет

CheckBox

Флажок отображается справа от текста

Эффект отсутствует

Нет

CheckedListBox

Все флажки отображаются справа от текста

Эффект отсутствует

Нет

ColorDialog

Не затрагивается; зависит от языка операционной системы

Эффект отсутствует

Нет

ComboBox

Позиции поля со списком выравниваются по правому краю

Эффект отсутствует

Нет

ContextMenu

Выравнивание по правому краю, порядок чтения справа налево

Эффект отсутствует

Нет

DataGrid

Выравнивание по правому краю, порядок чтения справа налево

Эффект отсутствует

Нет

DataGridView

Устанавливает порядок чтения справа налево и меняет макет элемента управления

Эффект отсутствует

Нет

DateTimePicker

Не затрагивается; зависит от языка операционной системы

Отражает элемент управления

Да

DomainUpDown

Кнопки со стрелками вверх и вниз расположены по левому краю

Эффект отсутствует

Нет

ErrorProvider

Не поддерживается

Эффект отсутствует

Нет

FontDialog

Зависит от языка операционной системы

Эффект отсутствует

Нет

Form

Устанавливает порядок чтения справа налево и обращает полосы прокрутки

Отражает форму

Да

GroupBox

Заголовок выравнивается по правому краю. Дочерние элементы управления могут наследовать это свойство.

Используйте TableLayoutPanel в элементе управления для поддержки отражения справа налево

Нет

HScrollBar

Начинается с ползунка полосы прокрутки, выровненного по правому краю

Эффект отсутствует

Нет

ImageList

Не требуется

Эффект отсутствует

Нет

Label

Выравнивание по правому краю. Обращает TextAlign и ImageAlign

Эффект отсутствует

Нет

LinkLabel

Выравнивание по правому краю. Обращает TextAlign и ImageAlign

Эффект отсутствует

Нет

ListBox

Позиции выравниваются по правому краю

Эффект отсутствует

Нет

ListView

Порядок чтения справа налево; элементы остаются выровненными по левому краю

Отражает элемент управления

Да

MainMenu

Выравнивание по правому краю и порядок чтения справа налево во время выполнения (но не во время разработки)

Эффект отсутствует

Нет

MaskedTextBox

Отображает текст справа налево.

Эффект отсутствует

Нет

MonthCalendar

Не затрагивается; зависит от языка операционной системы

Отражает элемент управления

Да

NotifyIcon

Не поддерживается

Не поддерживается

Нет

NumericUpDown

Кнопки со стрелками вверх и вниз выравниваются по левому краю

Эффект отсутствует

Нет

OpenFileDialog

Не затрагивается; зависит от языка операционной системы

Эффект отсутствует

Нет

PageSetupDialog

Не затрагивается; зависит от языка операционной системы

Эффект отсутствует

Нет

Panel

Дочерние элементы управления могут наследовать это свойство.

Используйте TableLayoutPanel в элементе управления для поддержки порядка справа налево

Да

PictureBox

Не поддерживается

Эффект отсутствует

Нет

PrintDialog

Не затрагивается; зависит от языка операционной системы

Эффект отсутствует

Нет

PrintDocument

Вертикальная полоса прокрутки выравнивается по левому краю, горизонтальная полоса прокрутки начинается слева

Эффект отсутствует

Нет

PrintPreviewDialog

Не поддерживается

Не поддерживается

Нет

ProgressBar

Не затрагивается данным свойством

Отражает элемент управления

Да

RadioButton

Переключатель отображается справа от текста

Эффект отсутствует

Нет

RichTextBox

Компоненты элемента управления, содержащие текст, отображаются справа налево, с порядком чтения справа налево

Эффект отсутствует

Нет

SaveFileDialog

Не затрагивается; зависит от языка операционной системы

Эффект отсутствует

Нет

SplitContainer

Макет панели обращается; вертикальная полоса прокрутки отображается слева; горизонтальная полоса прокрутки начинается справа

Используйте TableLayoutPanel, чтобы отразить порядок дочерних элементов управления

Нет

Splitter

Не поддерживается

Эффект отсутствует

Нет

StatusBar

Не поддерживается; вместо этого используйте StatusStrip

Эффект отсутствует; вместо этого используйте StatusStrip

Нет

TabControl

Не затрагивается данным свойством

Отражает элемент управления

Да

TextBox

Текст с порядком чтения справа налево отображается справа налево.

Эффект отсутствует

Нет

Timer

Не требуется

Не требуется

Нет

ToolBar

Не затрагивается данным свойством; вместо этого используйте ToolStrip

Эффект отсутствует; вместо этого используйте ToolStrip

Да

ToolTip

Устанавливается порядок чтения справа налево

Эффект отсутствует

Нет

TrackBar

Прокрутка или отслеживание начинается с правого края; если для свойства Orientation задана вертикальная ориентация, счетчик тактов находится справа

Эффект отсутствует

Нет

TreeView

Устанавливается только порядок чтения справа налево

Отражает элемент управления

Да

UserControl

Вертикальная полоса прокрутки отображается слева; ползунок горизонтальной полосы прокрутки располагается справа

Прямая поддержка отсутствует; используйте TableLayoutPanel

Нет

VScrollBar

Отображается по левому, а не по правому краю прокручиваемых элементов управления

Эффект отсутствует

Нет

Кодировка

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

Другие ресурсы

Глобализация Windows Forms