Prise en charge bidirectionnelle pour les applications Windows Forms

Vous pouvez utiliser Visual Studio pour créer des applications Windows qui prennent en charge des langues bidirectionnelles (de droite à gauche) telles que l’arabe et l’hébreu. Cela comprend les formulaires standard, les boîtes de dialogue, les formulaires MDI et tous les contrôles que vous pouvez utiliser dans ces formulaires, c'est-à-dire tous les objets de l'espace de noms Control.

Prise en charge de la culture

La culture et les paramètres de culture d'interface utilisateur déterminent comment une application gère les dates, heures, devises et autres informations. La prise en charge de la culture et de la culture d'interface utilisateur pour les langues bidirectionnelles est identique à celle des autres langues. Pour plus d’informations, consultez les classes propres à la culture pour les formulaires Windows globaux et les formulaires web.

Propriétés RightToLeft et RightToLeftLayout

La classe de base Control, à partir de laquelle les formulaires dérivent, comprend une propriété RightToLeft que vous pouvez définir pour modifier l'ordre de lecture d'un formulaire et de ses contrôles. Si vous définissez la propriété RightToLeft du formulaire, par défaut les contrôles sur le formulaire héritent de ce paramètre. Toutefois, vous pouvez également définir la propriété RightToLeft individuellement sur la plupart des contrôles. Consultez aussi Comment : afficher du texte de droite à gauche dans les Windows Forms pour la globalisation.

L'effet de la propriété RightToLeft peut varier d'un contrôle à un autre. Dans certains contrôles, la propriété définit uniquement l'ordre de lecture, comme dans les contrôles Button, TreeView et ToolTip. Dans d'autres, la propriété RightToLeft modifie à la fois l'ordre de lecture et la disposition. Cela comprend les contrôles RadioButton, ComboBox et CheckBox D'autres contrôles exigent que la propriété RightToLeftLayout soit appliquée pour refléter sa disposition de droite à gauche. Le tableau suivant fournit des détails sur la manière dont les propriétés RightToLeft et RightToLeftLayout affectent les différents contrôles Windows Forms.

Contrôle/composant Effet de la propriété RightToLeft Effet de la propriété RightToLeftLayout Nécessite l'effet miroir ?
Button Définit l'ordre de lecture de droite à gauche. Inverse TextAlign, ImageAlign, et TextImageRelation Aucun effet Non
CheckBox La case à cocher est affichée à droite du texte Aucun effet Non
CheckedListBox Toutes les cases à cocher sont affichées à droite du texte Aucun effet Non
ColorDialog Pas affecté ; dépend de la langue du système d'exploitation Aucun effet Non
ComboBox Les éléments dans le contrôle de zone de liste déroulante sont alignés à droite Aucun effet Non
ContextMenu Apparaît aligné à droite avec l'ordre de lecture de droite à gauche Aucun effet Non
DataGrid Apparaît aligné à droite avec l'ordre de lecture de droite à gauche Aucun effet Non
DataGridView Affecte à la fois l'ordre de lecture de droite à gauche et la disposition des contrôles Aucun effet Non
DateTimePicker Pas affecté ; dépend de la langue du système d'exploitation Applique un effet miroir sur le contrôle Oui
DomainUpDown Aligne à gauche les boutons Haut et Bas Aucun effet Non
ErrorProvider Non pris en charge Aucun effet Non
FontDialog Dépend de la langue du système d'exploitation Aucun effet Non
Form Définit l'ordre de lecture de droite à gauche et inverse les barres de défilement Applique un effet miroir sur le formulaire Oui
GroupBox La légende est alignée à droite. Les contrôles enfants peuvent hériter de cette propriété. Utilisez un TableLayoutPanel dans le contrôle pour la prise en charge de l'effet miroir de droite à gauche Non
HScrollBar Commence avec la case de défilement (curseur) alignée à droite Aucun effet Non
ImageList Non requis Aucun effet Non
Label Aligné à droite. Inverse TextAlign et ImageAlign Aucun effet Non
LinkLabel Aligné à droite. Inverse TextAlign et ImageAlign Aucun effet Non
ListBox Les éléments sont alignés à droite Aucun effet Non
ListView Définit l'ordre de lecture de droite à gauche ; les éléments restent alignés à gauche Applique un effet miroir sur le contrôle Oui
MainMenu Aligné à droite avec l'ordre de lecture de droite à gauche au moment de l'exécution (et non au moment du design) Aucun effet Non
MaskedTextBox Affiche le texte de droite à gauche. Aucun effet Non
MonthCalendar Pas affecté ; dépend de la langue du système d'exploitation Applique un effet miroir sur le contrôle Oui
NotifyIcon Non pris en charge Non pris en charge Non
NumericUpDown Les boutons Haut et Bas sont alignés à gauche Aucun effet Non
OpenFileDialog Sur les systèmes d’exploitation de droite à gauche, définissez la propriété du RightToLeft formulaire contenant pour RightToLeft.Yes localiser la boîte de dialogue Aucun effet Non
PageSetupDialog Pas affecté ; dépend de la langue du système d'exploitation Aucun effet Non
Panel Les contrôles enfants peuvent hériter de cette propriété Utilisez un TableLayoutPanel dans le contrôle pour la prise en charge de l'effet miroir de droite à gauche Oui
PictureBox Non pris en charge Aucun effet Non
PrintDialog Pas affecté ; dépend de la langue du système d'exploitation Aucun effet Non
PrintDocument La barre de défilement verticale est alignée à gauche et la barre de défilement horizontale commence à gauche Aucun effet Non
PrintPreviewDialog Non pris en charge Non pris en charge Non
ProgressBar Non affecté par cette propriété Applique un effet miroir sur le contrôle Oui
RadioButton La case d'option est affichée à droite du texte Aucun effet Non
RichTextBox Les éléments du contrôle qui comportent du texte sont affichés de droite à gauche avec l'ordre de lecture de droite à gauche Aucun effet Non
SaveFileDialog Pas affecté ; dépend de la langue du système d'exploitation Aucun effet Non
SplitContainer La disposition du panneau est inversée ; la barre de défilement verticale est affichée à gauche ; la barre de défilement horizontale commence à droite Utilisez un TableLayoutPanel pour appliquer un effet miroir à l'ordre des contrôles enfants Non
Splitter Non pris en charge Aucun effet Non
StatusBar Non pris en charge ; utilisez plutôt StatusStrip Aucun effet ; utilisez plutôt StatusStrip Non
TabControl Non affecté par cette propriété Applique un effet miroir sur le contrôle Oui
TextBox Affiche le texte de droite à gauche avec l'ordre de lecture de droite à gauche Aucun effet Non
Timer Non requis Non requis Non
ToolBar Non affecté par cette propriété ; utilisez plutôt ToolStrip Aucun effet ; utilisez plutôt ToolStrip Oui
ToolTip Définit l'ordre de lecture de droite à gauche Aucun effet Non
TrackBar Le défilement ou le suivi commence à droite ; quand Orientation est verticale, les graduations commencent à droite Aucun effet Non
TreeView Définit l'ordre de lecture de droite à gauche uniquement Applique un effet miroir sur le contrôle Oui
UserControl La barre de défilement verticale est affichée à gauche ; la barre de défilement horizontale possède un curseur à droite Aucune prise en charge directe ; utilisez un TableLayoutPanel Non
VScrollBar Affiché sur le côté gauche plutôt que sur le côté droit des contrôles à défilement Aucun effet Non

Encodage

Les Windows Forms prennent en charge Unicode. Vous pouvez donc inclure n'importe quel jeu de caractères quand vous créez des applications bidirectionnelles. Toutefois, les contrôles Windows Forms ne prennent pas tous en charge Unicode sur toutes les plateformes.

GDI+

Vous pouvez utiliser GDI+ pour dessiner du texte avec l’ordre de lecture de droite à gauche. La méthode DrawString, qui sert à dessiner du texte, prend en charge un paramètre StringFormat auquel vous pouvez affecter comme valeur le membre DirectionRightToLeft de l'énumération StringFormatFlags pour inverser le point d'origine du texte.

Boîtes de dialogue communes

Les outils système tels que la boîte de dialogue Ouvrir le fichier sont sous le contrôle de Windows. Ils héritent des éléments linguistiques du système d'exploitation. Si vous utilisez une version de Windows avec les paramètres linguistiques corrects, ces boîtes de dialogue fonctionneront correctement avec les langues bidirectionnelles.

De même, les boîtes de message passent par le système d'exploitation et prennent en charge le texte bidirectionnel. Les légendes des boutons des boîtes de message sont basées sur le paramètre de langue actif. Par défaut, les boîtes de message n'utilisent pas l'ordre de lecture de droite à gauche, mais vous pouvez spécifier un paramètre pour modifier l'ordre de lecture quand les boîtes de message sont affichées.

RightToLeft, barres de défilement et ScrollableControl

Il existe actuellement une limitation dans les Windows Forms qui empêche toutes les classes dérivées de ScrollableControl de se comporter correctement quand la propriété RightToLeft est activée et que AutoScroll a la valeur Yes. Par exemple, supposez que vous placez un contrôle tel que Panel ou une classe de conteneur dérivée de Panel (telle que FlowLayoutPanel ou TableLayoutPanel) sur votre formulaire. Si vous affectez la valeur Yes à la propriété AutoScroll sur le conteneur et que vous affectez ensuite la valeur Right à la propriété Anchor sur un ou plusieurs des contrôles à l'intérieur du conteneur, aucune barre de défilement n'est jamais affichée. La classe dérivée de ScrollableControl se comporte comme si AutoScroll avait la valeur No.

Actuellement, la seule solution de contournement consiste à imbriquer le ScrollableControl à l'intérieur d'un autre ScrollableControl. Par exemple, si vous souhaitez que TableLayoutPanel fonctionne dans cette situation, vous pouvez le placer à l'intérieur d'un contrôle Panel et affecter la valeur Yes à la propriété AutoScroll sur le Panel.

Mise en miroir

Appliquer un effet miroir signifie inverser la disposition des éléments d'interface utilisateur pour qu'ils se présentent de droite à gauche. Dans un Windows Form en miroir, par exemple, les boutons Réduire, Agrandir et Fermer sont affichés tout à gauche dans la barre de titre, et non à droite.

L'affectation de la valeur true à la propriété RightToLeft d'un formulaire ou d'un contrôle inverse l'ordre de lecture des éléments sur un formulaire, mais ce paramètre n'inverse pas la disposition pour qu'elle soit de droite à gauche, autrement dit il ne provoque pas d'effet miroir. Par exemple, la définition de cette propriété ne déplace pas les boutons Réduire, Agrandir et Fermer de la barre de titre du formulaire vers le côté gauche du formulaire. De même, certains contrôles tels que le contrôle TreeView nécessitent l'application de l'effet miroir pour modifier et adapter leur affichage à l'arabe ou l'hébreu. Vous pouvez appliquer un effet miroir sur ces contrôles en définissant la propriété RightToLeftLayout.

Vous pouvez créer des versions miroir des contrôles suivants :

Certains contrôles sont scellés, ce qui signifie que vous ne pouvez pas dériver un nouveau contrôle à partir d'eux. Il s'agit entre autres des contrôles ImageList et ProgressBar.

Voir aussi