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 | 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 da destra a sinistra e inverte le barre di scorrimento | Esegue il mirroring del form | Sì |
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 | Sì |
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 | 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à 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 | Sì |
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 | Sì |
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 | Sì |
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 | Sì |
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 | Sì |
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
.NET Desktop feedback