2011-08-20 8 views
5

Quando si aggiunge un oggetto ToolStripMenuItem a un modulo e si imposta RightToLeft su true e con una citazione alla fine del testo posiziona la citazione nella parte anteriore del testo?Perché questo succede con ToolStripMenuItems?

ToolStripMenuItem1.Text = "Name \"Text\""; 
ToolStripMenuItem1.RightToLeft = System.Windows.Forms.RightToLeft.Yes; 

Visualizza come; Testo "Nome"

Modifica: questo accade anche tra virgolette singole.

+0

+1 bello:) ... – Tigran

+0

Sto facendo qualcosa di sbagliato o pensi che questo sia un bug? – ManicResin

+0

se viene visualizzata la correzione con righttoleft = false (impostazione predefinita) ma non quando si cambia orientamento, quindi direi che si tratta di un bug – Thundersquirrel

risposta

0

EDIT:
Se si vuole solo modificare l'allineamento del testo poi c'è sempre ToolStripItem.Alignment o ToolStripItem.Padding provare ...

La caratteristica che si sta utilizzando è pensato per la localizzazione e può supportare contenuto misto .. Il modo in cui si utilizza quella funzione sembra più un abuso ... poiché Windows deve dare un senso al "contenuto misto" di cui si fornisce un estremo (niente arabo).

Trovo sempre difficile essere sicuri che tale comportamento anche se inaspettato e poco intuitivo è davvero un bug ...

Rendering logica per il testo BiDi è piuttosto complesso - per esempio quando si dispone di un punto esclamativo in qualche parte testo che deve essere reso rightToLeft può portare ad invertire la direzione funzione dell'attuazione ...

per alcune informazioni vedi http://www.unicode.org/reports/tr9/

quanto pare NET non è completamente compatibile con l'algoritmo Unicode BiDi ... c'è anche una libreria che cerca di im vedere http://sourceforge.net/projects/nbidi/

+0

Grazie per la modifica che è più verso cui sono diretto. In realtà sto cercando un modo per visualizzare gli elementi del menu dalla direzione opposta. – ManicResin

4

Impostando RightToLeft su Sì, si chiede al motore di rendering del testo di Windows di applicare le regole del layout di testo utilizzate nelle lingue che utilizzano un ordine da destra a sinistra. Arabo ed ebraico Queste regole sono piuttosto sottili, soprattutto perché le frasi in inglese in queste lingue non sono rare. Non renderà "txeT emaN" come normalmente fa con glifi arabi o ebraici, che non ha senso per nessuno. Ha bisogno di identificare frasi o frasi e invertire quelle. Le virgolette sono speciali, delineano una frase.

Per farla breve, si sta ab-utilizzando una funzionalità per ottenere l'allineamento che era davvero destinato a fare qualcosa di molto più coinvolto. Non usarlo per quello.

+1

Nota anche il bit del design API magistrale. Non è una proprietà bool, non è impostata su true. È un enum con solo due valori legali, sì e no. Precisando: hey, questa non è solo una semplice opzione. Eccezionale. –

+0

Potrebbe essere, ma sembra che stia accadendo con la maggior parte dei caratteri di punteggiatura e altri simboli. Quindi, se questa è la causa, come si potrebbe visualizzare correttamente questo controllo di forma per apparire da destra a sinistra senza causare questo? EDIT: ho corretto l'errore nel mio codice delle domande. – ManicResin

+1

Sì, la punteggiatura delinea anche le frasi.Prova a rileggere la risposta e scegli una parte che non ti è chiara, non capisco perché hai postato il commento. L'essenza della risposta è che RightToLeft ha lo scopo di fare qualcosa * completamente * diverso da quello per cui vuoi usarlo. L'allineamento del testo è solo un piccolo effetto collaterale di esso. –