2011-08-20 130 views
5

向表單添加ToolStripMenuItem並將RightToLeft設置爲true並在文本末尾添加引號時,它會將引號放在Text的前面?爲什麼ToolStripMenuItems會發生這種情況?

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

顯示爲; 「名稱」文本

編輯:這也發生在單引號中。

+0

+1不錯的一個:) ... – Tigran

+0

我做錯了什麼或者你認爲這是一個錯誤? – ManicResin

+0

如果它顯示糾正righttoleft = false(默認),但不是當你改變方向時,那麼我會說這是一個錯誤 – Thundersquirrel

回答

0

編輯:
如果你只是想改變文本對齊,然後總有ToolStripItem.AlignmentToolStripItem.Padding嘗試...

您正在使用的功能是爲本地化,並且可以支持混合內容.. 您使用該功能的方式似乎更像是一種濫用......因爲Windows需要理解您提供極端(完全沒有阿拉伯語)的「混合內容」。

我發現它總是很難確定這樣的行爲雖然意外和直觀實在是一個錯誤......

渲染邏輯雙向文本是相當複雜的 - 例如,當你有一個感嘆號在某處應呈現的文字從右至左它可能導致逆轉取決於執行的方向......

對於一些有識之士看到http://www.unicode.org/reports/tr9/

,因爲它似乎.NET是不是與Unicode的比迪算法完全兼容...甚至有圖書館試圖即時通訊請參閱http://sourceforge.net/projects/nbidi/

+0

感謝您的編輯,更加關注我前進的方向。實際上我正在尋找一種方法來讓菜單項從相反的方向顯示出來。 – ManicResin

4

通過將RightToLeft設置爲是,您要求Windows文本呈現引擎應用在使用從右到左順序的語言中使用的文本佈局規則。阿拉伯文和希伯來文。這些規則非常微妙,特別是因爲這些語言中的英語短語並不罕見。它不會像通常用阿拉伯語或希伯來字形那樣呈現「txeT emaN」,這對任何人都沒有意義。它需要識別句子或短語並將其反轉。行情是特殊的,他們劃定了一個短語。

長話短說,你正在使用一個功能,以獲得對齊真的意味着做更多的事情。不要爲此使用它。

+1

另外還要注意一些高級的API設計。這不是一個布爾屬性,你不把它設置爲true。這是一個只有兩個合法值的枚舉,是和否。指出:嘿,這不僅僅是一個簡單的選項。真棒。 –

+0

這可能是,但它似乎與大多數標點符號和其他符號發生。因此,如果這是原因,如何正確顯示這種形式控制從右到左出現而不會造成這種情況?編輯:我解決了我的問題代碼中的錯誤。 – ManicResin

+1

是的,標點符號也描述了短語。嘗試重新閱讀答案並選擇一個不清楚的部分,我不明白你爲什麼發佈了評論。答案的本質是,RightToLeft的目的是完成*完全*不同於你想要使用它的東西。文本對齊只是它的一個小副作用。 –

相關問題