Bi-Directional supporto per le applicazioni Windows Forms
È possibile usare Visual Studio per creare applicazioni basate su Windows che supportano lingue bidirezionali (da destra a sinistra), ad esempio arabo ed ebraico. Sono inclusi moduli standard, finestre di dialogo, moduli MDI e tutti i controlli che è possibile utilizzare in questi moduli, ovvero tutti gli oggetti nello spazio dei nomi Control.
Supporto culturale
Le impostazioni di cultura e di interfaccia utente determinano come un'applicazione gestisce date, orari, valuta e altre informazioni. Il supporto per la cultura e la cultura dell'interfaccia utente è lo stesso per le lingue bidirezionali come per tutte le altre lingue. Per ulteriori informazioni, vedere classi specifiche della cultura per Windows Form globali e moduli web.
Proprietà RightToLeft e RightToLeftLayout
La classe base Control, da cui derivano le maschere, include una proprietà RightToLeft che è possibile impostare per modificare l'ordine di lettura di una maschera e dei suoi controlli. Se si imposta la proprietà RightToLeft del modulo, per impostazione predefinita i controlli nel modulo ereditano questa impostazione. Tuttavia, è anche possibile impostare la proprietà RightToLeft singolarmente nella maggior parte dei controlli. Vedi anche Procedura: Visualizzare testo da destra a sinistra in Windows Forms per la globalizzazione.
L'effetto della proprietà RightToLeft può essere diverso da un controllo a un altro. In alcuni controlli la proprietà imposta solo l'ordine di lettura, come nei controlli Button, TreeView e ToolTip. In altri controlli, la proprietà RightToLeft cambia sia l'ordine di lettura che il layout. Sono inclusi i controlli RadioButton, ComboBox e CheckBox. Altri controlli richiedono che la proprietà RightToLeftLayout venga applicata per riflettere il layout da destra a sinistra. Nella tabella seguente vengono fornite informazioni dettagliate sul modo in cui le proprietà RightToLeft e RightToLeftLayout influiscono sui singoli controlli Windows Form.
Controllo/componente | Effetto della proprietà RightToLeft | Effetto della proprietà RightToLeftLayout | Richiede duplicazione? |
---|---|---|---|
Button | Imposta l'ordine di lettura RTL. Inverte TextAlign, ImageAligne TextImageRelation | Nessun effetto | No |
CheckBox | La casella di controllo viene visualizzata sul lato destro del testo | Nessun effetto | No |
CheckedListBox | Tutte le caselle di controllo vengono visualizzate sul lato destro del testo | Nessun effetto | No |
ColorDialog | Non interessato; dipende dalla lingua del sistema operativo | Nessun effetto | No |
ComboBox | Gli elementi nel controllo casella combinata sono allineati a destra | Nessun effetto | No |
ContextMenu | Viene visualizzato allineato a destra con l'ordine di lettura RTL | Nessun effetto | No |
DataGrid | Viene visualizzato allineato a destra con l'ordine di lettura RTL | Nessun effetto | No |
DataGridView | Influisce sia sull'ordine di lettura RTL che sul layout del controllo | Nessun effetto | No |
DateTimePicker | Non interessato; dipende dalla lingua del sistema operativo | Rispecchia il controllo | Sì |
DomainUpDown | Allinea a sinistra i pulsanti "su" e "giù" | Nessun effetto | No |
ErrorProvider | Non supportato | Nessun effetto | No |
FontDialog | Dipende dalla lingua del sistema operativo | Nessun effetto | No |
Form | Imposta l'ordine di lettura RTL e inverte le barre di scorrimento | Rispecchia il modulo | Sì |
GroupBox | La didascalia viene visualizzata allineata a destra. I controlli secondari possono ereditare questa proprietà. | Usare un TableLayoutPanel all'interno del controllo per il supporto del mirroring da destra verso sinistra. | No |
HScrollBar | Inizia con la casella di scorrimento (pollice) allineata a destra | Nessun effetto | No |
ImageList | Non obbligatorio | Nessun effetto | No |
Label | Visualizzato allineato a destra. Inverte TextAlign e ImageAlign | Nessun effetto | No |
LinkLabel | Visualizzato allineato a destra. Inverte TextAlign e ImageAlign | Nessun effetto | No |
ListBox | Gli elementi sono allineati a destra | Nessun effetto | No |
ListView | Imposta l'ordine di lettura su RTL; gli elementi rimangono allineati a sinistra | Rispecchia il controllo | Sì |
MainMenu | Visualizzato allineato a destra con l'ordine di lettura RTL durante la fase di esecuzione (non durante la fase di progettazione) | Nessun effetto | No |
MaskedTextBox | Visualizza il testo da destra a sinistra. | Nessun effetto | No |
MonthCalendar | Non interessato; dipende dalla lingua del sistema operativo | Rispecchia il controllo | Sì |
NotifyIcon | Non supportato | Non supportato | No |
NumericUpDown | I pulsanti su e giù sono allineati a sinistra | Nessun effetto | No |
OpenFileDialog | Nei sistemi operativi da destra a sinistra, impostare la proprietà RightToLeft del modulo contenitore su RightToLeft.Yes per localizzare la finestra di dialogo. | Nessun effetto | No |
PageSetupDialog | Non interessato; dipende dalla lingua del sistema operativo | Nessun effetto | No |
Panel | I controlli figlio possono ereditare questa proprietà | Usare TableLayoutPanel all'interno del controllo per il supporto da destra a sinistra | Sì |
PictureBox | Non supportato | Nessun effetto | No |
PrintDialog | Non interessato; dipende dalla lingua del sistema operativo | Nessun effetto | No |
PrintDocument | La barra di scorrimento verticale diventa allineata a sinistra e la barra di scorrimento orizzontale inizia da sinistra | Nessun effetto | No |
PrintPreviewDialog | Non supportato | Non supportato | No |
ProgressBar | Non influenzato da questa proprietà | Rispecchia il controllo | Sì |
RadioButton | Il pulsante di opzione si trova sul lato destro del testo | Nessun effetto | No |
RichTextBox | Gli elementi di controllo che includono testo vengono visualizzati da destra a sinistra con ordine di lettura RTL | Nessun effetto | No |
SaveFileDialog | Non interessato; dipende dalla lingua del sistema operativo | Nessun effetto | No |
SplitContainer | Il layout del pannello è invertito; la barra di scorrimento verticale viene visualizzata a sinistra; la barra di scorrimento orizzontale inizia da destra | Usare un TableLayoutPanel per eseguire il mirroring dell'ordine dei controlli figlio | No |
Splitter | Non supportato | Nessun effetto | No |
StatusBar | Non supportato; usare invece StatusStrip | Nessun effetto; usare invece StatusStrip | No |
TabControl | Non interessato da questa proprietà | Rispecchia il controllo | Sì |
TextBox | Visualizza testo da destra a sinistra con ordine di lettura RTL | Nessun effetto | No |
Timer | Non obbligatorio | Non obbligatorio | No |
ToolBar | Non influenzato da questa proprietà, usare invece ToolStrip | Nessun effetto; usare invece ToolStrip | Sì |
ToolTip | Imposta l'ordine di lettura RTL | Nessun effetto | No |
TrackBar | Lo scorrimento o la traccia inizia da destra; quando Orientation è verticale, i segni di graduazione si verificano da destra | Nessun effetto | No |
TreeView | Imposta solo l'ordine di lettura RTL | Rispecchia il controllo | Sì |
UserControl | La barra di scorrimento verticale appare a sinistra; la barra di scorrimento orizzontale ha la manopola a destra. | Nessun supporto diretto; usare il TableLayoutPanel | No |
VScrollBar | Visualizzato sul lato sinistro anziché sul lato destro dei controlli scorrevoli | Nessun effetto | No |
Codifica
Windows Form supporta Unicode, quindi è possibile includere qualsiasi set di caratteri quando si creano applicazioni bidirezionali. Tuttavia, non tutti i controlli Windows Form supportano Unicode in tutte le piattaforme.
GDI+
È possibile usare GDI+ per disegnare testo con ordine di lettura da destra a sinistra. Il metodo DrawString, utilizzato per disegnare testo, supporta un parametro StringFormat
che è possibile impostare sul membro DirectionRightToLeft dell'enumerazione StringFormatFlags per invertire il punto di origine per il testo.
Finestre di dialogo comuni
Gli strumenti di sistema, ad esempio la finestra di dialogo Apri file, sono sotto il controllo di Windows. Ereditano gli elementi del linguaggio dal sistema operativo. Se si usa una versione di Windows con le impostazioni della lingua corrette, queste finestre di dialogo funzioneranno correttamente con le lingue bidirezionali.
Analogamente, le finestre di messaggio passano attraverso il sistema operativo e supportano il testo bidirezionale. Le didascalie nei pulsanti della finestra di messaggio si basano sull'impostazione corrente della lingua. Per impostazione predefinita, le finestre di messaggio non usano l'ordine di lettura da destra a sinistra, ma è possibile specificare un parametro per modificare l'ordine di lettura quando vengono visualizzate le finestre di messaggio.
RightToLeft, Barre di scorrimento e ScrollableControl
Esiste attualmente una limitazione in Windows Forms che impedisce a tutte le classi derivate da ScrollableControl di funzionare correttamente quando sia RightToLeft è abilitata che AutoScroll è impostata su Yes. Si supponga, ad esempio, di posizionare un controllo, ad esempio Panel, o una classe contenitore derivata da Panel (ad esempio, FlowLayoutPanel o TableLayoutPanel) nel form. Se si imposta AutoScroll nel contenitore su Yes e quindi si imposta la proprietà Anchor su uno o più controlli all'interno del contenitore su Right, non viene mai visualizzata alcuna barra di scorrimento. La classe derivata da ScrollableControl agisce come se AutoScroll fosse impostata su No.
Attualmente, l'unica soluzione alternativa consiste nell'annidare il ScrollableControl all'interno di un altro ScrollableControl. Ad esempio, se hai bisogno di TableLayoutPanel affinché funzioni correttamente in questa situazione, puoi inserirlo all'interno di un controllo Panel e impostare AutoScroll sul Panel su Yes.
Duplicazione schermo
Mirroring si riferisce all'inversione del layout degli elementi dell'interfaccia utente perché scorrano da destra a sinistra. In un Windows Form specchiato, ad esempio, i pulsanti Riduci a icona, Ingrandisci e Chiudi appaiono dal lato sinistro della barra del titolo, non dal lato destro.
L'impostazione della proprietà RightToLeft di un modulo o di un controllo su true
inverte l'ordine di lettura degli elementi sul modulo, ma non inverte il layout affinché sia da destra a sinistra, ovvero non provoca il mirroring. Ad esempio, l'impostazione di questa proprietà non sposta i pulsanti Riduci a icona, Ingrandiscie Chiudi nella barra del titolo del modulo a sinistra del modulo. Analogamente, alcuni controlli, ad esempio il controllo TreeView, richiedono il mirroring per modificare la visualizzazione in modo che sia appropriato per l'arabo o l'ebraico. È possibile eseguire il mirroring di questi controlli impostando la proprietà RightToLeftLayout.
È possibile creare versioni speculari dei controlli seguenti:
Alcuni controlli sono sigillati. Pertanto, non è possibile derivare un nuovo controllo da essi. Questi includono i controlli ImageList e ProgressBar.
Vedere anche
.NET Desktop feedback