我有一个基本语言为英语的 WinForms 应用程序。我将表格本地化为德语。德语中的一些单词比对应的英语单词长得多,因此我需要在德语版本的表单上移动一些控件。问题是当我移动英语控件时,德语本地化并没有反射(reflect)出移动(很明显)。
然而,一些控件被错误地移动了,我想重新设置它们,所以它们在英语表单上的移动也会反射(reflect)在德语表单上。
如何重置德语窗体上单个控件的位置和大小(或所有属性),以便该控件在英语窗体上移动时会在窗体的两种语言版本上移动?除了挖掘本地化的 .resx 文件并删除控件的所有属性分配之外,还有其他方法吗?
最佳答案
我是面向 Visual Studio 开发人员的本地化产品的作者(为了全面披露)。您从本地化“.resx”文件中删除的任何属性,无论是在 Visual Studio 窗体设计器中还是在“.resx”文件本身中手动删除,都会导致控件再次遵从该属性的默认语言值。但是,没有处理此问题的特定功能。您需要逐个控制自己进行操作。但是请注意,对于这个问题和其他问题,Visual Studio 有时会不稳定,并且存在各种错误,因此即使您确实使用设计器删除它们,事情也并不总是有效(上次我回顾了这种情况)。除非现在已经修复(我对此表示怀疑),否则如果您将德语控件的“Location”属性设置回默认语言的“Location”属性(例如在设计器中),VS 应该从中删除“Location”属性“.de.resx”文件。它确实 - 有时。其他时候它没有(去图),你需要自己手动删除它。一旦它消失了,“回退”过程确保将再次使用默认语言属性(因此在您的情况下将控件移动到英语版本将其移动到德语版本,因为两者都再次依赖相同的属性- 来自英文“.resx”文件的那个)。
关于c# - 本地化后重置控制位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14395592/