Condividi tramite


Supporto bidirezionale per le Windows Forms Application

È 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 form standard, finestre di dialogo, form MDI e tutti i controlli che è possibile usare in questi form, ovvero tutti gli oggetti nello spazio dei nomi Control.

Supporto delle impostazioni cultura

Le impostazioni cultura e le impostazioni cultura dell'interfaccia utente determinano il funzionamento di un'applicazione rispetto a date, orari, valuta e altre informazioni. Il supporto per le impostazioni cultura e le impostazioni cultura dell'interfaccia utente per le lingue bidirezionali è uguale a quello per le altre lingue. Per altre informazioni, vedere Classi specifiche delle impostazioni cultura per Windows Form globali e Web form.

Proprietà RightToLeft e RightToLeftLayout

La classe base Control da cui derivano i form include una proprietà RightToLeft che è possibile impostare per modificare l'ordine di lettura di un form e dei relativi controlli. Se si imposta la proprietà RightToLeft, i controlli sul form erediteranno questa impostazione per impostazione predefinita. Tuttavia, è anche possibile impostare singolarmente la proprietà RightToLeft nella maggior parte dei controlli. Vedere anche Procedura: visualizzare il testo da destra a sinistra in Windows Form per la globalizzazione.

L'effetto della proprietà RightToLeft può essere diverso da un controllo a un altro. In alcuni controlli, questa proprietà imposta soltanto l'ordine di lettura, come nei controlli Button, TreeView e ToolTip. In altri controlli, la proprietà RightToLeft modifica sia ordine di lettura che il layout, ad esempio, nei controlli RadioButton, ComboBox e CheckBox. Altri controlli richiedono che la proprietà RightToLeftLayout venga applicata per eseguire il mirroring del layout da destra a sinistra. La tabella seguente fornisce informazioni dettagliate sugli effetti delle proprietà RightToLeft e RightToLeftLayout sui singoli controlli di Windows Form.

Controllo/Componente Effetto della proprietà RightToLeft Effetto della proprietà RightToLeftLayout Richiede il mirroring?
Button Imposta l'ordine di lettura da destra a sinistra. Inverte TextAlign, ImageAlign e TextImageRelation Nessun effetto No
CheckBox La casella di controllo viene visualizzata a destra del testo Nessun effetto No
CheckedListBox Tutte le caselle di controllo vengono visualizzate a destra del testo Nessun effetto No
ColorDialog Non interessato. Dipende dal linguaggio del sistema operativo Nessun effetto No
ComboBox Gli elementi nel controllo della casella combinata sono allineati a destra Nessun effetto No
ContextMenu Viene visualizzato allineato a destra con ordine di lettura da destra a sinistra Nessun effetto No
DataGrid Viene visualizzato allineato a destra con ordine di lettura da destra a sinistra Nessun effetto No
DataGridView Influisce sul layout di controllo e sull'ordine di lettura da destra a sinistra Nessun effetto No
DateTimePicker Non interessato. Dipende dal linguaggio del sistema operativo Esegue il mirroring del 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 da destra a sinistra e inverte le barre di scorrimento Esegue il mirroring del form
GroupBox La barra del titolo viene visualizzata allineata a destra. I controlli figlio possono ereditare questa proprietà. Usare TableLayoutPanel all'interno del controllo per il supporto al mirroring da destra a sinistra No
HScrollBar Inizia con la casella di scorrimento (pulsante di scorrimento) 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 da destra a sinistra; gli elementi rimangono allineati a sinistra Esegue il mirroring del controllo
MainMenu Visualizzato allineato a destra con ordine di lettura da destra a sinistra in fase di esecuzione (non in fase di progettazione) Nessun effetto No
MaskedTextBox Visualizza il testo da destra a sinistra. Nessun effetto No
MonthCalendar Non interessato. Dipende dal linguaggio del sistema operativo Esegue il mirroring del 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à del RightToLeft modulo contenitore per RightToLeft.Yes localizzare la finestra di dialogo Nessun effetto No
PageSetupDialog Non interessato. Dipende dal linguaggio 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 dal linguaggio 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 interessato da questa proprietà Esegue il mirroring del controllo
RadioButton Il pulsante di opzione viene visualizzato a destra del testo Nessun effetto No
RichTextBox Gli elementi del controllo che includono testo vengono visualizzati da destra a sinistra con ordine di lettura da destra a sinistra Nessun effetto No
SaveFileDialog Non interessato. Dipende dal linguaggio del sistema operativo Nessun effetto No
SplitContainer Il layout del pannello viene invertito; la barra di scorrimento verticale viene visualizzata a sinistra; la barra di scorrimento orizzontale inizia da destra Usare TableLayoutPanel per eseguire il mirroring dell'ordine dei controlli figlio No
Splitter Non supportato Nessun effetto No
StatusBar Non supportato. In alternativa, usare StatusStrip Nessun effetto. In alternativa, usare StatusStrip No
TabControl Non interessato da questa proprietà Esegue il mirroring del controllo
TextBox Visualizza il testo da destra a sinistra con ordine di lettura da destra a sinistra Nessun effetto No
Timer Non obbligatorio Non obbligatorio No
ToolBar Non interessato da questa proprietà. In alternativa, usare ToolStrip Nessun effetto. In alternativa, usare ToolStrip
ToolTip Imposta l'ordine di lettura da destra a sinistra Nessun effetto No
TrackBar Lo scorrimento o l'avanzamento inizia da destra. Quando Orientation è verticale, i segni di graduazione iniziano da destra Nessun effetto No
TreeView Imposta solo l'ordine di lettura da destra a sinistra Esegue il mirroring del controllo
UserControl La barra di scorrimento verticale viene visualizzata a sinistra. La barra di scorrimento orizzontale ha il pulsante di scorrimento a destra Nessun supporto diretto. Usare TableLayoutPanel No
VScrollBar Visualizzato sul lato sinistro anziché sul lato destro dei controlli scorrevoli Nessun effetto No

Codifica

I Windows Form supportano Unicode, pertanto è possibile includere qualsiasi set di caratteri durante la creazione di applicazioni bidirezionali. Tuttavia, non tutti i controlli di Windows Form supportano Unicode su tutte le piattaforme.

GDI+

È possibile usare GDI+ per disegnare testo con ordine di lettura da destra a sinistra. Il metodo DrawString, usato per creare il testo, supporta un parametro StringFormat che è possibile impostare sul membro DirectionRightToLeft dell'enumerazione StringFormatFlags per invertire il punto di origine del testo.

Finestre di dialogo comuni

Gli strumenti di sistema, ad esempio la finestra di dialogo Apri file, sono controllati da Windows. Gli elementi del linguaggio vengono ereditati dal sistema operativo. Se si usa una versione di Windows con le impostazioni di lingua appropriate, queste finestre di dialogo funzioneranno correttamente con le lingue bidirezionali.

Allo stesso modo, le finestre di messaggio vengono controllate dal sistema operativo e supportano il testo bidirezionale. Le barre del titolo nei pulsanti delle finestre di messaggio sono basate sull'impostazione della lingua corrente. 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.

RightToLeft, barre di scorrimento e ScrollableControl

Esiste attualmente una limitazione in Windows Form che impedisce il corretto funzionamento di tutte le classi derivate da ScrollableControl quando RightToLeft è abilitato e AutoScroll è impostato su Yes. Ad esempio, si supponga di inserire un controllo come Panel, o una classe contenitore derivata da Panel (ad esempio FlowLayoutPanel o TableLayoutPanel), nel form. Se si imposta AutoScroll nel contenitore su Yes e si imposta la proprietà Anchor di uno o più controlli all'interno del contenitore su Right, non verrà visualizzata alcuna barra di scorrimento. La classe derivata da ScrollableControl agisce come se AutoScroll fosse impostato su No.

Attualmente, l'unica soluzione alternativa consiste nell'annidare ScrollableControl in un altro ScrollableControl. Ad esempio, se è necessario TableLayoutPanel per lavorare in questa situazione, è possibile inserirlo all'interno di un controllo Panel e impostare AutoScroll in Panel su Yes.

Mirroring

Mirroring fa riferimento all'inversione del layout degli elementi dell'interfaccia utente in modo tale che scorrano da destra a sinistra. In un Windows Form con mirroring, ad esempio, i pulsanti Riduci a icona, Ingrandisci e Chiudi vengono visualizzati all'estrema sinistra della barra del titolo, non all'estrema destra.

L'impostazione di un form o di una proprietà del controllo RightToLeft su true inverte l'ordine di lettura degli elementi in un form, ma questa impostazione non inverte il layout da destra a sinistra, ovvero non causa il mirroring. Ad esempio, se si imposta questa proprietà i pulsanti Riduci a icona, Ingrandisci e Chiudi nella barra del titolo del modulo non vengono spostati sul lato sinistro del modulo. Analogamente, alcuni controlli, ad esempio TreeView, richiedono il mirroring per modificare la visualizzazione affinché diventi appropriata per l'arabo o l'ebraico. È possibile eseguire il mirroring di questi controlli impostando la proprietà RightToLeftLayout.

È possibile creare versioni con mirroring dei controlli seguenti:

Alcuni controlli sono sealed, quindi non è possibile derivare un nuovo controllo da essi. Questi controlli includono ImageList e ProgressBar.

Vedi anche