2017-10-15 87 views

回答

0

我想也許有可能通過重寫Graphics類來在文本繪製級別翻譯帶有字典的窗體。

Graphics類不能被覆蓋。您可以覆蓋控件的OnPaint方法。但是,如何將文本圖紙與其他圖紙分開?例如,如果有人讀取Text屬性,您會得到什麼結果?

有人有一些好主意嗎?

是的,使用內置的本地化解決方案。只需在您的表單上設置Localizable財產至true。現在,您可以在設計時切換語言,並在設計時編輯該語言的所有內容,而不僅僅是文本,還包括RightToLeft屬性,大小和基本所有內容。

當您啓動應用程序時,表單將使用Windows語言或回退到不變的語言。如果您想以編程方式更改語言,只需設置Thread.CurrentThread.CurrentUICulture屬性。您可能希望重新打開表單以應用該語言,或者明確地致電InitializeComponent()

+0

這是一個有趣的方式,我會檢查出來。而對於你的問題,我的意思是隻將輸出轉換爲顯示,所以Text屬性將保持原來的狀態。 – user6466445

+0

這將是非常具有誤導性,缺乏每一個慣例。順便說一句,爲什麼它是一個問題,如果「文本」屬性返回控件上的文本?如果你需要一些固定的東西,那就是'Name'屬性,你也可以使用'Tag'來達到任何自定義的目的。 – taffer

+0

如果我正在翻譯Text屬性,我無法返回原始文本,並且這可能會在某些情況下導致問題(例如,帶選項列表的ComboBox),如果翻譯是在繪圖時完成的,那麼Text屬性仍然是源文件,並且所以隨時可以通過重繪來輕鬆地更改語言。 – user6466445