Somewhere else,有人指出控件的“可见”属性不能本地化。这是半真半假。但是,“可见”属性将LocalizableAttribute设置为true。但这只是意味着该属性被序列化为资源文件。我编写了一个测试程序,对于不变文化,标签的可见属性设置为“false”。使表格可本地化,我将德国文化的可见属性更改为“真实”。现在如果我在系统设置为德语区域设置的情况下启动程序会发生什么情况?标签保持不可见。 检查资源文件Form1.de.resx我可以看到visible属性没有被序列化。但是,如果我手动将此添加到资源文件:如何检测WinForms中的可本地化的属性?
<data name="label1.Visible" type="System.Boolean, mscorlib">
<value>True</value>
</data>
标签出现。我承认会有些困惑。 有两个问题:
- 如何使用内置序列化程序检测属性是否“真正”可本地化?
- 什么是推荐的方式来覆盖默认行为?
编辑: 也许我需要澄清我的问题。 我的示例程序是一个简单的表单,其默认语言设置为不变。我通过表单设计器手动添加了德语资源。程序在区域设置设置为德语的系统上运行。
案例1
“可见” 的面板的属性添加到形式:
1)在德国培养不变培养,true(默认)设置为false。 =>面板不可见
2.)在Invariant文化中设置为true,在德国文化中设为false。 =>面板不可见(按预期工作)
显然,如果该值不是默认值,则该值仅写入特定于语言的资源文件。
案例2
“字体”标签的属性添加到窗体:
1)设置为固定区域性大胆,属性重置在德国文化为默认值。 =>标签不是粗体
2.)在Invariant文化中设置为默认值,在德国文化中为粗体。 =>标签为粗体
现在,这里的属性按预期序列化。
这是一个错误还是我错过了什么?
我们已将此作为MS支持的错误提交。支持工程师已经证实了这一点。我会让你知道这是怎么回事; ;-) – puls200 2011-06-07 06:12:24