Condividi tramite


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