2017-10-15 94 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