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
.NET Desktop feedback