Supporto bidirezionale per le applicazioni Windows Form
È possibile utilizzare Visual Studio per creare applicazioni basate su Windows che supportano le lingue bidirezionali (da destra a sinistra), ad esempio l'arabo e l'ebraico. Questo include i form standard, le finestre di dialogo, i form MDI e tutti i controlli che è possibile utilizzare in questi form, ovvero tutti gli oggetti nello spazio dei nomi Control.
Supporto per le impostazioni cultura
Le impostazioni cultura e le impostazioni cultura dell'interfaccia utente determinano il modo in cui un'applicazione gestisce le date, gli orari, la valuta e altre informazioni. Il supporto per le impostazioni cultura e per le impostazioni cultura dell'interfaccia utente nel caso delle lingue bidirezionali è uguale a quello di qualsiasi altra lingua. Per ulteriori informazioni, vedere Classi specifiche della lingua per Windows Form e Web Form globali e Classi specifiche delle impostazioni cultura per Windows Form e Web Form globali e Classi specifiche delle impostazioni cultura per Windows Form e Web Form globali e Classi specifiche delle impostazioni cultura per Windows Form e Web Form globali.
Proprietà RightToLeft e RightToLeftLayout
La classe base Control, da cui derivano i form, comprende una proprietà RightToLeft che è possibile impostare per cambiare l'ordine di lettura di un form e dei relativi controlli. Se viene impostata la proprietà RightToLeft del form, per impostazione predefinita i controlli del form erediteranno questa impostazione. È anche possibile, tuttavia, impostare singolarmente la proprietà RightToLeft per la maggior parte dei controlli. Per ulteriori informazioni, vedere Procedura: visualizzare il testo da destra a sinistra in Windows Form per la globalizzazione e Procedura: visualizzare il testo da destra a sinistra in Windows Form per la globalizzazione e Procedura: visualizzare il testo da destra a sinistra in Windows Form per la globalizzazione e Procedura: visualizzare il testo da destra a sinistra in Windows Form per la globalizzazione e 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 all'altro. In alcuni controlli, ad esempio Button, TreeView e ToolTip, questa proprietà imposta soltanto l'ordine di lettura mentre, in altri controlli, la proprietà RightToLeft modifica sia l'ordine di lettura che il layout, come avviene per i controlli RadioButton, ComboBox e CheckBox. Altri controlli richiedono che, per eseguire il mirroring del layout da destra a sinistra, venga applicata la proprietà RightToLeftLayout. Nella tabella riportata di seguito vengono fornite informazioni dettagliate sugli effetti delle proprietà RightToLeft e RightToLeftLayout sui singoli controlli Windows Form.
Controllo/Componente |
Effetto della proprietà RightToLeft |
Effetto della proprietà RightToLeftLayout |
Mirroring richiesto o non richiesto |
---|---|---|---|
Imposta l'ordine di lettura da destra a sinistra. Inverte TextAlign, ImageAlign e TextImageRelation |
Nessun effetto |
No |
|
La casella di controllo viene visualizzata a destra del testo |
Nessun effetto |
No |
|
Tutte le caselle di controllo vengono visualizzate a destra del testo |
Nessun effetto |
No |
|
Nessun effetto; dipende dalla lingua del sistema operativo |
Nessun effetto |
No |
|
Gli elementi del controllo casella combinata vengono allineati a destra |
Nessun effetto |
No |
|
Appare allineato a destra con l'ordine di lettura da destra a sinistra |
Nessun effetto |
No |
|
Appare allineato a destra con l'ordine di lettura da destra a sinistra |
Nessun effetto |
No |
|
Ha effetto sia sull'ordine di lettura da destra a sinistra che sul layout del controllo |
Nessun effetto |
No |
|
Nessun effetto; dipende dalla lingua del sistema operativo |
Esegue il mirroring del controllo |
Sì |
|
Allinea a sinistra i pulsanti freccia su e freccia giù |
Nessun effetto |
No |
|
Non supportato |
Nessun effetto |
No |
|
Dipende dalla lingua del sistema operativo |
Nessun effetto |
No |
|
Imposta l'ordine di lettura da destra a sinistra e inverte le barre di scorrimento |
Esegue il mirroring del form |
Sì |
|
La didascalia viene visualizzata allineata a destra. I controlli figlio potrebbero ereditare questa proprietà. |
Utilizzare TableLayoutPanel all'interno del controllo per supportare il mirroring da destra a sinistra |
No |
|
La casella di scorrimento appare allineata a destra |
Nessun effetto |
No |
|
Non richiesto |
Nessun effetto |
No |
|
Viene visualizzato con allineamento a destra. Annulla TextAlign e ImageAlign |
Nessun effetto |
No |
|
Viene visualizzato con allineamento a destra. Annulla TextAlign e ImageAlign |
Nessun effetto |
No |
|
Gli elementi sono allineati a destra |
Nessun effetto |
No |
|
Imposta l'ordine di lettura da destra a sinistra; gli elementi rimangono allineati a sinistra |
Esegue il mirroring del controllo |
Sì |
|
Viene visualizzato allineato a destra con l'ordine di lettura da destra a sinistra in fase di esecuzione (non in fase di progettazione) |
Nessun effetto |
No |
|
Visualizza il testo da destra a sinistra |
Nessun effetto |
No |
|
Nessun effetto; dipende dalla lingua del sistema operativo |
Esegue il mirroring del controllo |
Sì |
|
Non supportato |
Non supportato |
No |
|
I pulsanti freccia su e freccia giù vengono allineati a sinistra |
Nessun effetto |
No |
|
Nessun effetto; dipende dalla lingua del sistema operativo |
Nessun effetto |
No |
|
Nessun effetto; dipende dalla lingua del sistema operativo |
Nessun effetto |
No |
|
I controlli figlio potrebbero ereditare questa proprietà |
Utilizzare TableLayoutPanel all'interno del controllo per supportare il mirroring da destra a sinistra |
Sì |
|
Non supportato |
Nessun effetto |
No |
|
Nessun effetto; dipende dalla lingua del sistema operativo |
Nessun effetto |
No |
|
La barra di scorrimento verticale diventa allineata a sinistra e le barre di scorrimento orizzontale iniziano da sinistra |
Nessun effetto |
No |
|
Non supportato |
Non supportato |
No |
|
Nessun effetto |
Esegue il mirroring del controllo |
Sì |
|
Il pulsante di opzione viene visualizzato a destra del testo |
Nessun effetto |
No |
|
Gli elementi del controllo che includono testo vengono visualizzati da destra a sinistra con l'ordine di lettura da destra a sinistra |
Nessun effetto |
No |
|
Nessun effetto; dipende dalla lingua del sistema operativo |
Nessun effetto |
No |
|
Il layout del pannello viene invertito; le barre di scorrimento verticale vengono visualizzate sulla sinistra; le barre di scorrimento orizzontali iniziano da destra |
Utilizzare TableLayoutPanel per eseguire il mirroring dell'ordine dei controlli figlio |
No |
|
Non supportato |
Nessun effetto |
No |
|
Non supportato. Utilizzare in alternativa StatusStrip |
Nessun effetto. Utilizzare in alternativa StatusStrip. |
No |
|
Nessun effetto |
Esegue il mirroring del controllo |
Sì |
|
Il testo viene visualizzato da destra a sinistra con l'ordine di lettura da destra a sinistra |
Nessun effetto |
No |
|
Non richiesto |
Non richiesto |
No |
|
Nessun effetto. Utilizzare in alternativa ToolStrip |
Nessun effetto. Utilizzare in alternativa ToolStrip. |
Sì |
|
Imposta l'ordine di lettura da destra a sinistra |
Nessun effetto |
No |
|
Lo scorrimento o la traccia inizia da destra; quando Orientation è impostato sull'orientamento verticale, gli scatti si verificano da destra |
Nessun effetto |
No |
|
Imposta solo l'ordine di lettura da destra a sinistra |
Esegue il mirroring del controllo |
Sì |
|
Le barre di scorrimento verticali vengono visualizzate sulla sinistra; la casella di scorrimento della barra di scorrimento orizzontale si trova sulla destra |
Nessun supporto diretto. Utilizzare TableLayoutPanel |
No |
|
Viene visualizzata sulla parte sinistra, anziché sulla parte destra, dei controlli scorrevoli |
Nessun effetto |
No |
Codifica
Poiché in Windows Form viene fornito il supporto per i caratteri Unicode, è possibile includere qualsiasi set di caratteri durante la creazione delle applicazioni bidirezionali. Tuttavia, non tutti i controlli Windows Form supportano Unicode su tutte le piattaforme. Per ulteriori informazioni, vedere Codifica e globalizzazione di Windows Form.
GDI+
È possibile utilizzare GDI+ per creare testo con l'ordine di lettura da destra a sinistra. Il metodo DrawString, utilizzato per creare testo, supporta un parametro StringFormat che è possibile impostare sul membro DirectionRightToLeft dell'enumerazione StringFormatFlags al fine di invertire il punto di origine del testo.
Finestre di dialogo comuni
Le utilità di sistema, ad esempio la finestra di dialogo File Apri, vengono controllate da Windows ed ereditano gli elementi della lingua dal sistema operativo. Se si utilizza una versione di Windows con le impostazioni corrette della lingua, queste finestre di dialogo verranno eseguite correttamente con le lingue bidirezionali.
Analogamente, le finestre di messaggio passano attraverso il sistema operativo e supportano il testo bidirezionale. Le didascalie dei pulsanti delle finestre di messaggio sono basate sull'impostazione corrente della lingua. Per impostazione predefinita, nelle finestre di messaggio non viene utilizzato l'ordine di lettura da destra a sinistra. È possibile, tuttavia, specificare un parametro per modificare l'ordine di lettura quando vengono visualizzate le finestre di messaggio. Per ulteriori informazioni, vedere Procedura: creare finestre di messaggio per Windows Form bidirezionali.
RightToLeft, Scrollbars e ScrollableControl
In Windows Form è attualmente presente una limitazione che impedisce il corretto funzionamento delle classi derivate da ScrollableControl quando la proprietà RightToLeft è attivata e la proprietà AutoScroll è impostata su Yes. Si supponga, ad esempio, di inserire nel form un controllo quale Panel o una classe di contenitori derivata da Panel quale FlowLayoutPanel o TableLayoutPanel. Se si imposta AutoScroll nel contenitore su Yes e quindi si imposta la proprietà Anchor in uno o più dei controlli all'interno del contenitore su Right, non verrà visualizzata alcuna barra di scorrimento. La classe derivata da ScrollableControl funziona come se AutoScroll fosse impostato su No.
Attualmente, l'unica soluzione alternativa è annidare ScrollableControl in un'altra classe ScrollableControl. Ad esempio, se è necessario che il controllo TableLayoutPanel funzioni in questa situazione, è possibile inserirlo all'interno di un controllo Panel e impostare la proprietà AutoScroll del controllo Panel su Yes.
Mirroring
Per mirroring si intende l'inversione del layout degli elementi dell'interfaccia utente in modo tale che scorrano da destra verso sinistra. In un Windows Form speculare, ad esempio, i pulsanti di riduzione a icona, di ingrandimento e di chiusura appaiono all'estrema sinistra della barra del titolo anziché all'estrema destra.
L'impostazione della proprietà RightToLeft di un form o di un controllo su true inverte l'ordine di lettura degli elementi di un form, ma non inverte il layout in modo che diventi da destra a sinistra, ovvero non determina l'esecuzione del mirroring. I pulsanti di riduzione a icona, ingrandimento e chiusura della barra del titolo del form, ad esempio, non vengono spostati nella parte sinistra. Analogamente, per alcuni controlli, ad esempio TreeView, è richiesto il mirroring affinché la relativa visualizzazione diventi appropriata per l'arabo o l'ebraico. È possibile eseguire il mirroring di questi controlli impostando la proprietà RightToLeftLayout.
È possibile creare le versioni speculari dei controlli riportati di seguito.
Alcuni controlli sono sealed. Non è possibile, quindi, derivare da essi un nuovo controllo. Questi controlli includono i controlli ImageList e ProgressBar.
Vedere anche
Concetti
Supporto bidirezionale per applicazioni Web ASP.NET