Partager via


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 inclut 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

Les paramètres de culture et de culture de l’interface utilisateur déterminent le fonctionnement d’une application avec des dates, des heures, des devises et d’autres informations. La prise en charge de la culture et de la culture de l’interface utilisateur est la même pour les langues bidirectionnelles que pour toutes les autres langues. Pour plus d’informations, consultez Classes spécifiques à la culture pour les Windows Forms et Web Forms globaux.

Propriétés RightToLeft et RightToLeftLayout

La classe de base Control, à partir de laquelle dérivent les formulaires, inclut 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, les contrôles par défaut du 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 Aide et Astuces : afficher du texte de droite à gauche dans Windows Forms pour la globalisation.

L’effet de la propriété RightToLeft peut différer d’un contrôle à un autre. Dans certains contrôles, la propriété définit uniquement l’ordre de lecture, comme dans le Button, TreeView et les contrôles ToolTip. Dans d’autres contrôles, la propriété RightToLeft modifie à la fois l’ordre de lecture et la disposition. Cela inclut les contrôles RadioButton, ComboBox et CheckBox. D’autres contrôles nécessitent que la propriété RightToLeftLayout soit appliquée pour mettre en miroir sa disposition de droite à gauche. Le tableau suivant fournit des détails sur la façon dont les propriétés RightToLeft et RightToLeftLayout affectent les contrôles Windows Forms individuels.

Contrôle/Composant Effet de la propriété RightToLeft Effet de la propriété RightToLeftLayout Faut-il un miroir ?
Button Définit l’ordre de lecture RTL. Inverse TextAlign, ImageAlign, et TextImageRelation Aucun effet Non
CheckBox La case à cocher s’affiche sur le côté droit du texte Aucun effet Non
CheckedListBox Toutes les cases à cocher sont affichées sur le côté droit du texte Aucun effet Non
ColorDialog Non affecté ; dépend de la langue du système d’exploitation Aucun effet Non
ComboBox Les éléments dans le contrôle zone de liste déroulante sont alignés à droite Aucun effet Non
ContextMenu Apparaît aligné à droite avec l’ordre de lecture RTL Aucun effet Non
DataGrid Apparaît aligné à droite avec l’ordre de lecture RTL Aucun effet Non
DataGridView Affecte à la fois l’ordre de lecture et la disposition du contrôle RTL Aucun effet Non
DateTimePicker Non 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 RTL et inverse les barres de défilement Met en miroir le formulaire Oui
GroupBox La légende est affiché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 obligatoire 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 sur RTL ; les éléments restent alignés à gauche Applique un effet miroir sur le contrôle Oui
MainMenu Affichage 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 Non 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 à orientation droite à gauche, définir la propriété RightToLeft du formulaire contenant par RightToLeft.Yes permet de localiser la boîte de dialogue. Aucun effet Non
PageSetupDialog Non 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 Non affecté ; dépend de la langue du système d’exploitation Aucun effet Non
PrintDocument La barre de défilement verticale devient alignée à gauche et la barre de défilement horizontale commence à partir de la 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 Le bouton radio s’affiche sur le côté droit du texte Aucun effet Non
RichTextBox Les éléments de contrôle qui incluent du texte sont affichés de droite à gauche avec l’ordre de lecture RTL Aucun effet Non
SaveFileDialog Non 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 s’affiche à gauche ; la barre de défilement horizontale commence à partir de la 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 ; utiliser StatusStrip à la place Non
TabControl Non affecté par cette propriété Applique un effet miroir sur le contrôle Oui
TextBox Affiche du texte de droite à gauche avec l’ordre de lecture RTL Aucun effet Non
Timer Non obligatoire Non obligatoire Non
ToolBar Non affecté par cette propriété ; utilisez plutôt ToolStrip Aucun effet ; utiliser ToolStrip à la place Oui
ToolTip Définit l’ordre de lecture RTL 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 RTL uniquement Applique un effet miroir sur le contrôle Oui
UserControl La barre de défilement verticale s’affiche à gauche ; la barre de défilement horizontale a son curseur à droite Aucune prise en charge directe ; utilisez un TableLayoutPanel Non
VScrollBar Affiché sur le côté gauche au lieu du côté droit des contrôles défilants Aucun effet Non

Codage

Windows Forms prend en charge Unicode. Vous pouvez donc inclure n’importe quel jeu de caractères lorsque vous créez vos applications bidirectionnelles. Toutefois, tous les contrôles Windows Forms ne prennent pas 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, utilisée pour dessiner du texte, prend en charge un paramètre StringFormat que vous pouvez définir sur le membre DirectionRightToLeft de l’énumération StringFormatFlags afin d’inverser le point d’origine du texte.

Boîtes de dialogue courantes

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

De même, les zones de message passent par le système d’exploitation et prennent en charge le texte bidirectionnel. Les légendes des boutons de boîte de message sont basées sur le paramètre de langue actuel. Par défaut, les zones 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 lorsque les boîtes de message sont affichées.

RightToLeft, Scrollbars et ScrollableControl

Il existe actuellement une limitation dans Windows Forms qui empêche toutes les classes dérivées de ScrollableControl d’agir correctement lorsque les deux RightToLeft sont activées et que AutoScroll est défini sur Yes. Par exemple, supposons que vous placez un contrôle tel que Panel( ou une classe de conteneur dérivée de Panel (par exemple, FlowLayoutPanel ou TableLayoutPanel) sur votre formulaire. Si vous définissez AutoScroll sur le conteneur sur Yes, puis définissez la propriété Anchor sur une ou plusieurs des commandes à l’intérieur du conteneur sur Right, alors aucune barre de défilement n’apparaît. La classe dérivée de ScrollableControl agit comme si AutoScroll était défini sur No.

Actuellement, la seule solution de contournement consiste à imbriquer le ScrollableControl à l’intérieur d’une autre ScrollableControl. Par exemple, si vous avez besoin que TableLayoutPanel fonctionne dans cette situation, vous pouvez le placer à l’intérieur d’un contrôle Panel et définir AutoScroll du Panel à Yes.

Mise en miroir

Le fait référence à la mise en miroir, c'est-à-dire l’inversion de la disposition des éléments de l'interface utilisateur pour qu'ils s'affichent de droite à gauche. Dans un Windows Form mis en miroir, par exemple, les boutons Réduire, Agrandir et Fermer apparaissent à gauche dans la barre de titre, et non à droite.

La définition de la propriété RightToLeft d’un formulaire ou d’un contrôle pour true inverse l’ordre de lecture des éléments d’un formulaire, mais ce paramètre n’inverse pas la disposition de droite à gauche, c’est-à-dire qu’il ne provoque pas la mise en miroir. Par exemple, définir cette propriété ne déplace pas les boutons Réduire, Agrandiret Fermer de la barre de titre du formulaire vers la gauche. De même, certains contrôles, tels que le contrôle TreeView, nécessitent une mise en miroir afin de modifier leur affichage pour être approprié pour l’arabe ou l’hébreu. Vous pouvez mettre en miroir ces contrôles en définissant la propriété RightToLeftLayout.

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

Certains contrôles sont scellés. Par conséquent, vous ne pouvez pas dériver un nouveau contrôle d’eux. Il s’agit notamment des contrôles ImageList et ProgressBar.

Voir aussi