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