Dwukierunkowa obsługa aplikacji Windows Forms

Program Visual Studio umożliwia tworzenie aplikacji opartych na systemie Windows, które obsługują języki dwukierunkowe (od prawej do lewej), takie jak arabski i hebrajski. Dotyczy to formularzy standardowych, okien dialogowych, formularzy MDI i wszystkich kontrolek, z którymi można pracować w tych formularzach — czyli wszystkich obiektów w Control przestrzeni nazw.

Obsługa kultury

Ustawienia kultury i kultury interfejsu użytkownika określają, jak aplikacja działa z datami, godzinami, walutą i innymi informacjami. Obsługa kultury i kultury interfejsu użytkownika jest taka sama w przypadku języków dwukierunkowych, jak w przypadku innych języków. Aby uzyskać więcej informacji, zobacz Klasy specyficzne dla kultury dla globalnych formularzy systemu Windows i formularzy internetowych.

Właściwości RightToLeft i RightToLeftLayout

Klasa bazowa Control , z której pochodzą formularze, zawiera RightToLeft właściwość, którą można ustawić, aby zmienić kolejność odczytu formularza i jego kontrolek. Jeśli ustawisz właściwość formularza, domyślnie kontrolki na formularzu RightToLeft dziedziczą to ustawienie. Można jednak ustawić właściwość indywidualnie RightToLeft dla większości kontrolek. Zobacz również Instrukcje: wyświetlanie tekstu od prawej do lewej w formularzach systemu Windows na potrzeby globalizacji.

Efekt RightToLeft właściwości może się różnić od jednej kontrolki do innej. W niektórych kontrolkach właściwość ustawia tylko kolejność odczytu, tak jak w kontrolkach ButtonTreeView i ToolTip . W innych kontrolkach RightToLeft właściwość zmienia kolejność odczytu i układ. Obejmuje to kontrolki RadioButtoni . ComboBoxCheckBox Inne kontrolki wymagają zastosowania RightToLeftLayout właściwości w celu zdublowania jej układu od prawej do lewej. Poniższa tabela zawiera szczegółowe informacje na temat wpływu właściwości RightToLeft i RightToLeftLayout na poszczególne kontrolki windows Forms.

Kontrolka/składnik Efekt właściwości RightToLeft Efekt właściwości RightToLeftLayout Wymaga dublowania?
Button Ustawia kolejność odczytu RTL. TextAlignOdwraca , ImageAligniTextImageRelation Brak wpływu Nie.
CheckBox Pole wyboru jest wyświetlane po prawej stronie tekstu Brak wpływu Nie.
CheckedListBox Wszystkie pola wyboru są wyświetlane po prawej stronie tekstu Brak wpływu Nie.
ColorDialog Nie dotyczy to problemu; zależy od języka systemu operacyjnego Brak wpływu Nie.
ComboBox Elementy w kontrolce pola kombi są wyrównane do prawej Brak wpływu Nie.
ContextMenu Pojawia się wyrównany do prawej z kolejnością odczytu RTL Brak wpływu Nie.
DataGrid Pojawia się wyrównany do prawej z kolejnością odczytu RTL Brak wpływu Nie.
DataGridView Ma wpływ zarówno na kolejność odczytywania biblioteki RTL, jak i układ kontrolki Brak wpływu Nie.
DateTimePicker Nie dotyczy to problemu; zależy od języka systemu operacyjnego Dubluje kontrolkę Tak
DomainUpDown Wyrównywanie w lewo przycisków w górę i w dół Brak wpływu Nie.
ErrorProvider Nieobsługiwane Brak wpływu Nie.
FontDialog Zależy od języka systemu operacyjnego Brak wpływu Nie.
Form Ustawia kolejność odczytu RTL i odwraca paski przewijania Dubluje formularz Tak
GroupBox Zostanie wyświetlona podpis wyrównana do prawej. Kontrolki podrzędne mogą dziedziczyć tę właściwość. Korzystanie z TableLayoutPanel kontrolki w celu obsługi dublowania od prawej do lewej Nie.
HScrollBar Rozpoczyna się od pola przewijania (kciuk) wyrównanego do prawej Brak wpływu Nie.
ImageList Niewymagane Brak wpływu Nie.
Label Wyświetlane wyrównane do prawej. TextAlign Odwróć iImageAlign Brak wpływu Nie.
LinkLabel Wyświetlane wyrównane do prawej. TextAlign Odwróć iImageAlign Brak wpływu Nie.
ListBox Elementy są wyrównane do prawej Brak wpływu Nie.
ListView Ustawia kolejność odczytu na RTL; elementy pozostają wyrównane do lewej Dubluje kontrolkę Tak
MainMenu Wyświetlane wyrównane do prawej z kolejnością odczytu RTL w czasie wykonywania (nie w czasie projektowania) Brak wpływu Nie.
MaskedTextBox Wyświetla tekst od prawej do lewej. Brak wpływu Nie.
MonthCalendar Nie dotyczy to problemu; zależy od języka systemu operacyjnego Dubluje kontrolkę Tak
NotifyIcon Nieobsługiwane Nieobsługiwane Nie.
NumericUpDown Przyciski w górę i w dół są wyrównane do lewej Brak wpływu Nie.
OpenFileDialog W systemach operacyjnych od prawej do lewej ustaw właściwość formularza RightToLeft zawierającego, aby RightToLeft.Yes lokalizować okno dialogowe Brak wpływu Nie.
PageSetupDialog Nie dotyczy to problemu; zależy od języka systemu operacyjnego Brak wpływu Nie.
Panel Kontrolki podrzędne mogą dziedziczyć tę właściwość Użyj TableLayoutPanel kontrolki w celu uzyskania obsługi od prawej do lewej Tak
PictureBox Nieobsługiwane Brak wpływu Nie.
PrintDialog Nie dotyczy to problemu; zależy od języka systemu operacyjnego Brak wpływu Nie.
PrintDocument Pionowy pasek przewijania staje się wyrównany do lewej, a poziomy pasek przewijania zaczyna się od lewej Brak wpływu Nie.
PrintPreviewDialog Nieobsługiwane Nieobsługiwane Nie.
ProgressBar Nie ma to wpływu na tę właściwość Dubluje kontrolkę Tak
RadioButton Przycisk radiowy jest wyświetlany po prawej stronie tekstu Brak wpływu Nie.
RichTextBox Elementy sterujące zawierające tekst są wyświetlane od prawej do lewej z kolejnością odczytu RTL Brak wpływu Nie.
SaveFileDialog Nie dotyczy to problemu; zależy od języka systemu operacyjnego Brak wpływu Nie.
SplitContainer Układ panelu jest odwrócony; pionowy pasek przewijania jest wyświetlany po lewej stronie; poziomy pasek przewijania zaczyna się od prawej Używanie elementu do TableLayoutPanel dublowania kolejności kontrolek podrzędnych Nie.
Splitter Nieobsługiwane Brak wpływu Nie.
StatusBar Nieobsługiwane; zamiast tego użyj StatusStrip Brak efektu; zamiast tego użyj StatusStrip Nie.
TabControl Nie ma to wpływu na tę właściwość Dubluje kontrolkę Tak
TextBox Wyświetla tekst od prawej do lewej z kolejnością odczytu RTL Brak wpływu Nie.
Timer Niewymagane Niewymagane Nie.
ToolBar Nie ma to wpływu na tę właściwość; zamiast tego użyj ToolStrip Brak efektu; zamiast tego użyj ToolStrip Tak
ToolTip Ustawia kolejność odczytywania biblioteki RTL Brak wpływu Nie.
TrackBar Przewijanie lub śledzenie zaczyna się od prawej strony; gdy Orientation jest pionowa, kleszcze występują z prawej strony Brak wpływu Nie.
TreeView Ustawia tylko kolejność odczytu RTL Dubluje kontrolkę Tak
UserControl Pionowy pasek przewijania jest wyświetlany po lewej stronie; poziomy pasek przewijania ma kciuk po prawej stronie Brak bezpośredniego wsparcia; korzystanie z TableLayoutPanel Nie.
VScrollBar Wyświetlane po lewej stronie zamiast prawej strony kontrolek z możliwością przewijania Brak wpływu Nie.

Kodowanie

Formularze systemu Windows obsługują kod Unicode, dzięki czemu można uwzględnić dowolny zestaw znaków podczas tworzenia aplikacji dwukierunkowych. Jednak nie wszystkie kontrolki Windows Forms obsługują kod Unicode na wszystkich platformach.

GDI+

Możesz użyć interfejsu GDI+ do narysowania tekstu z kolejnością odczytu od prawej do lewej. Metoda DrawString , która służy do rysowania tekstu, obsługuje StringFormat parametr, który można ustawić na DirectionRightToLeft element członkowski StringFormatFlags wyliczenia, aby odwrócić punkt pochodzenia tekstu.

Typowe okna dialogowe

Narzędzia systemowe, takie jak Otwieranie pliku okno dialogowe, są pod kontrolą systemu Windows. Dziedziczą elementy języka z systemu operacyjnego. Jeśli używasz wersji systemu Windows z poprawnymi ustawieniami języka, te okna dialogowe będą działać poprawnie z językami dwukierunkowymi.

Podobnie pola komunikatów przechodzą przez system operacyjny i obsługują tekst dwukierunkowy. Przyciski podpis w oknie komunikatu są oparte na bieżącym ustawieniu języka. Domyślnie pola komunikatów nie używają kolejności odczytu od prawej do lewej, ale można określić parametr, aby zmienić kolejność odczytu po wyświetleniu pól komunikatów.

RightToLeft, Scrollbars i ScrollableControl

Obecnie istnieje ograniczenie w formularzach systemu Windows, które uniemożliwia prawidłowe działanie wszystkich klas pochodzących z ScrollableControl działania w przypadku włączenia obu RightToLeft tych klas i AutoScroll jest ustawiona na Yeswartość . Załóżmy na przykład, że umieszczasz kontrolkę, taką jak Panel— lub klasę kontenera pochodzącą z Panel (np FlowLayoutPanel . lub TableLayoutPanel)— w formularzu. Jeśli ustawisz AutoScroll dla kontenera Yes wartość , a następnie ustawisz Anchor właściwość na co najmniej jednej kontrolce wewnątrz kontenera na Rightwartość , żaden pasek przewijania nigdy nie będzie wyświetlany. Klasa pochodząca z ScrollableControl aktów jest ustawiona AutoScroll na Nowartość .

Obecnie jedynym obejściem jest zagnieżdżanie ScrollableControl wewnątrz innego ScrollableControlelementu . Jeśli na przykład musisz TableLayoutPanel pracować w tej sytuacji, możesz umieścić ją wewnątrz kontrolki Panel i ustawić AutoScroll na Panel .Yes

Dublowanie

Dublowanie odnosi się do odwrócenia układu elementów interfejsu użytkownika, dzięki czemu przepływają od prawej do lewej. Na przykład w dublowanej formularzu systemu Windows przyciski Minimalizuj, Maksymalizuj i Zamknij są wyświetlane w lewym górnym rogu na pasku tytułu, a nie po prawej stronie.

Ustawienie właściwości formularza lub kontrolki RightToLeft w celu true odwrócenia kolejności odczytu elementów w formularzu, ale to ustawienie nie odwraca układu do prawej do lewej — czyli nie powoduje dublowania. Na przykład ustawienie tej właściwości nie powoduje przeniesienia przycisków Minimalizuj, Maksymalizuj i Zamknij na pasku tytułu formularza po lewej stronie formularza. Podobnie niektóre kontrolki, takie jak kontrolka TreeView , wymagają dublowania w celu zmiany ich wyświetlania na odpowiedni dla języka arabskiego lub hebrajskiego. Te kontrolki można dublować, konfigurując RightToLeftLayout właściwość .

Można utworzyć zdublowane wersje następujących kontrolek:

Niektóre kontrolki są zapieczętowane. W związku z tym nie można utworzyć nowej kontrolki od nich. Należą do nich kontrolki ImageList i ProgressBar .

Zobacz też