Condividi tramite


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

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

Nessun effetto; dipende dalla lingua del sistema operativo

Nessun effetto

No

ComboBox

Gli elementi del controllo casella combinata vengono allineati a destra

Nessun effetto

No

ContextMenu

Appare allineato a destra con l'ordine di lettura da destra a sinistra

Nessun effetto

No

DataGrid

Appare allineato a destra con l'ordine di lettura da destra a sinistra

Nessun effetto

No

DataGridView

Ha effetto sia sull'ordine di lettura da destra a sinistra che sul layout del controllo

Nessun effetto

No

DateTimePicker

Nessun effetto; dipende dalla lingua del sistema operativo

Esegue il mirroring del controllo

DomainUpDown

Allinea a sinistra i pulsanti freccia su e freccia 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 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

HScrollBar

La casella di scorrimento appare allineata a destra

Nessun effetto

No

ImageList

Non richiesto

Nessun effetto

No

Label

Viene visualizzato con allineamento a destra. Annulla TextAlign e ImageAlign

Nessun effetto

No

LinkLabel

Viene visualizzato con allineamento a destra. Annulla 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

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

MaskedTextBox

Visualizza il testo da destra a sinistra

Nessun effetto

No

MonthCalendar

Nessun effetto; dipende dalla lingua del sistema operativo

Esegue il mirroring del controllo

NotifyIcon

Non supportato

Non supportato

No

NumericUpDown

I pulsanti freccia su e freccia giù vengono allineati a sinistra

Nessun effetto

No

OpenFileDialog

Nessun effetto; dipende dalla lingua del sistema operativo

Nessun effetto

No

PageSetupDialog

Nessun effetto; dipende dalla lingua del sistema operativo

Nessun effetto

No

Panel

I controlli figlio potrebbero ereditare questa proprietà

Utilizzare TableLayoutPanel all'interno del controllo per supportare il mirroring da destra a sinistra

PictureBox

Non supportato

Nessun effetto

No

PrintDialog

Nessun effetto; dipende dalla lingua del sistema operativo

Nessun effetto

No

PrintDocument

La barra di scorrimento verticale diventa allineata a sinistra e le barre di scorrimento orizzontale iniziano da sinistra

Nessun effetto

No

PrintPreviewDialog

Non supportato

Non supportato

No

ProgressBar

Nessun effetto

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 l'ordine di lettura da destra a sinistra

Nessun effetto

No

SaveFileDialog

Nessun effetto; dipende dalla lingua del sistema operativo

Nessun effetto

No

SplitContainer

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

Splitter

Non supportato

Nessun effetto

No

StatusBar

Non supportato. Utilizzare in alternativa StatusStrip

Nessun effetto. Utilizzare in alternativa StatusStrip.

No

TabControl

Nessun effetto

Esegue il mirroring del controllo

TextBox

Il testo viene visualizzato da destra a sinistra con l'ordine di lettura da destra a sinistra

Nessun effetto

No

Timer

Non richiesto

Non richiesto

No

ToolBar

Nessun effetto. Utilizzare in alternativa ToolStrip

Nessun effetto. Utilizzare in alternativa ToolStrip.

ToolTip

Imposta l'ordine di lettura da destra a sinistra

Nessun effetto

No

TrackBar

Lo scorrimento o la traccia inizia da destra; quando Orientation è impostato sull'orientamento verticale, gli scatti si verificano da destra

Nessun effetto

No

TreeView

Imposta solo l'ordine di lettura da destra a sinistra

Esegue il mirroring del controllo

UserControl

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

VScrollBar

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

Altre risorse

Globalizzazione di Windows Form