Udostępnij za pośrednictwem


Bi-Directional 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. Obejmuje to standardowe formularze, okna dialogowe, formularze MDI i wszystkie kontrolki, z którymi można pracować w tych formularzach — czyli wszystkie obiekty w przestrzeni nazw Control.

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 podstawowa Control, z której pochodzą formularze, zawiera właściwość RightToLeft, którą można ustawić, aby zmienić kolejność odczytu formularza i jego kontrolek. Jeśli ustawisz właściwość RightToLeft formularza, domyślnie kontrolki na formularzu dziedziczą to ustawienie. Można jednak również ustawić właściwość RightToLeft indywidualnie dla większości kontrolek. Zobacz również Instrukcje: wyświetlanie tekstu od prawej do lewej w formularzach Windows Forms for Globalization.

Efekt właściwości RightToLeft 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 Button, TreeView i ToolTip. W innych kontrolkach właściwość RightToLeft zmienia zarówno kolejność odczytu, jak i układ. Obejmuje to kontrolki RadioButton, ComboBox i CheckBox. Inne kontrolki wymagają zastosowania właściwości RightToLeftLayout, aby odzwierciedlić układ z prawej na lewą. 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 Wpływ właściwości RightToLeftLayout Wymaga dublowania?
Button Ustawia kolejność odczytu RTL. Odwraca TextAlign, ImageAligni TextImageRelation Brak efektu Nie
CheckBox Pole wyboru jest wyświetlane po prawej stronie tekstu Brak efektu Nie
CheckedListBox Wszystkie pola wyboru są wyświetlane po prawej stronie tekstu Brak efektu Nie
ColorDialog Nie dotyczy; zależy od języka systemu operacyjnego Brak efektu Nie
ComboBox Elementy w kontrolce pola kombi są wyrównane do prawej Brak efektu Nie
ContextMenu Pojawia się wyrównany do prawej z kolejnością odczytu RTL Brak efektu Nie
DataGrid Pojawia się wyrównany do prawej z kolejnością odczytu RTL Brak efektu Nie
DataGridView Ma wpływ zarówno na kolejność odczytywania biblioteki RTL, jak i układ kontrolki Brak efektu Nie
DateTimePicker Nie dotyczy; zależy od języka systemu operacyjnego Odzwierciedla kontrolkę Tak
DomainUpDown Wyrównuje w lewo przyciski w górę i w dół Brak efektu Nie
ErrorProvider Niewspierany Brak efektu Nie
FontDialog Zależy od języka systemu operacyjnego Brak efektu Nie
Form Ustawia kolejność odczytu RTL i odwraca paski przewijania Dubluje formularz Tak
GroupBox Podpis jest wyświetlany w prawo wyrównany. Kontrolki podrzędne mogą dziedziczyć tę właściwość. Użyj TableLayoutPanel w kontrolce dla obsługi lustrzanego odbicia od prawej do lewej Nie
HScrollBar Rozpoczyna się od pola przewijania (kciuk) wyrównanego do prawej Brak efektu Nie
ImageList Niewymagane Brak efektu Nie
Label Wyświetlane jako wyrównane do prawej strony. Odwraca TextAlign i ImageAlign Brak efektu Nie
LinkLabel Wyświetlane jako wyrównane do prawej. Odwraca TextAlign i ImageAlign Brak efektu Nie
ListBox Elementy są wyrównane do prawej Brak efektu Nie
ListView Ustawia kolejność odczytu na RTL; elementy pozostają wyrównane do lewej Odwzorowuje kontrolkę Tak
MainMenu Wyświetlane wyrównane do prawej z kolejnością odczytu RTL w czasie wykonywania (nie w czasie projektowania) Brak efektu Nie
MaskedTextBox Wyświetla tekst od prawej do lewej. Brak efektu Nie
MonthCalendar Nie dotyczy; zależy od języka systemu operacyjnego Odwzorowuje kontrolkę Tak
NotifyIcon Nieobsługiwane Nieobsługiwane Nie
NumericUpDown Przyciski w górę i w dół są wyrównane do lewej Brak efektu Nie
OpenFileDialog W systemach operacyjnych pracujących od prawej do lewej ustaw właściwość RightToLeft formularza na RightToLeft.Yes, aby zlokalizować okno dialogowe. Brak efektu Nie
PageSetupDialog Nie dotyczy; zależy od języka systemu operacyjnego Brak efektu Nie
Panel Kontrolki podrzędne mogą dziedziczyć tę właściwość Użyj TableLayoutPanel w kontrolce, aby zapewnić obsługę od prawej do lewej Tak
PictureBox Nieobsługiwane Brak efektu Nie
PrintDialog Nie ma wpływu; zależy od języka systemu operacyjnego Brak efektu Nie
PrintDocument Pionowy pasek przewijania wyrównuje się do lewej, a poziomy pasek przewijania rozpoczyna się z lewej strony. Brak efektu Nie
PrintPreviewDialog Nieobsługiwane Nieobsługiwane Nie
ProgressBar Nie ma to wpływu na tę właściwość Odzwierciedla kontrolkę Tak
RadioButton Przycisk radiowy jest wyświetlany po prawej stronie tekstu Brak efektu Nie
RichTextBox Elementy sterujące zawierające tekst są wyświetlane od prawej do lewej z kolejnością odczytu RTL Brak efektu Nie
SaveFileDialog Nie jest to dotknięte; zależy od języka systemu operacyjnego Brak efektu 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żyj TableLayoutPanel do odwzorowania kolejności kontrolek podrzędnych Nie
Splitter Nie obsługiwane Brak efektu 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ść Odwzorowuje kontrolkę Tak
TextBox Wyświetla tekst od prawej do lewej z kolejnością odczytu RTL Brak efektu 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 efektu Nie
TrackBar Przewijanie lub śledzenie zaczyna się od prawej strony; gdy Orientation jest ustawiona pionowo, tiki pojawiają się z prawej strony. Brak efektu 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; użyj TableLayoutPanel Nie
VScrollBar Wyświetlane po lewej stronie zamiast prawej strony kontrolek z możliwością przewijania Brak efektu 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 parametr StringFormat, który można ustawić na element członkowski DirectionRightToLeft wyliczenia StringFormatFlags w celu odwrócenia punktu 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. Podpisy przycisków okna komunikatów 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 dotyczące formularzy Windows, które uniemożliwia prawidłowe działanie wszystkich klas pochodzących z ScrollableControl, kiedy zarówno RightToLeft jest włączony, a AutoScroll ustawiony na wartość Yes. 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 w kontenerze na Yes, a następnie ustawisz właściwość Anchor na co najmniej jednej kontrolce wewnątrz kontenera na Right, a wtedy żaden pasek przewijania się nie pojawi. Klasa pochodząca z ScrollableControl działa tak, jakby AutoScroll ustawiono na No.

Aktualnie jedynym obejściem jest zagnieżdżenie ScrollableControl wewnątrz innego ScrollableControl. Jeśli potrzebujesz, aby TableLayoutPanel działał w tej sytuacji, możesz umieścić go w kontrolce Panel i ustawić AutoScroll na Panel, aby działał jako Yes.

Dublowanie

Lustrzane odbicie odnosi się do odwrócenia układu elementów interfejsu użytkownika, tak aby przepływały od prawej do lewej. Na przykład w odwróconym formularzu systemu Windows przyciski Minimalizuj, Maksymalizuj i Zamknij są wyświetlane po lewej stronie na pasku tytułu, a nie po prawej stronie.

Ustawienie właściwości RightToLeft formularza lub kontrolki na true odwraca kolejność odczytywania elementów w formularzu, ale to ustawienie nie zmienia układu na od prawej do lewej — to znaczy, że nie powoduje odbicia lustrzanego. Na przykład ustawienie tej właściwości nie sprawia, że przyciski Zamknij, Minimalizuji Maksymalizuj na pasku tytułu formularza zostają przeniesione na lewą stronę formularza. Podobnie niektóre kontrolki, takie jak kontrolka TreeView, wymagają symetrycznego odbicia w celu zmiany ich wyświetlania na odpowiedni dla języka arabskiego lub hebrajskiego. Te kontrolki można dublować, konfigurując właściwość RightToLeftLayout.

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 na ich podstawie. Obejmują one kontrolki ImageList i ProgressBar.

Zobacz też