我如何扩展所有控件的.text和.caption属性。我想创建一个多语言应用程序,以便从自定义文件中加载文本。
我想这样做:
button1.Text.LoadLocalizedText()
label1.Caption.LoadLocalizedText()
现在,我需要以下文本结果,以获取正确的文本。 我需要将“ class.button1.Text”作为字符串,并将标签“ class.label1.Caption”作为字符串。
加载自定义文本后,必须将文本动态设置为“源”属性,例如文本或标题。
我希望有人能帮助我。 谢谢。
答案 0 :(得分:1)
如果要编写一种可以在所有控件上调用的方法,请为控件编写扩展方法(请参阅@ Adriani6的答案)
public static void LoadLocalizedText(this Control ctrl) {...}
如果要加载按区域性本地化的资源,则应使用资源文件并为每种区域性创建文件。
创建2个资源文件,例如Resource1.resx
和Resource1.de.resx
,然后将相应的值保存到资源文件中。
然后,您可以像这样加载资源
[ProjectNamespace.]Resources.Resource1.ResourceManager.GetString("myResource");
或者,或者通过重载自行指定文化
Resources.Resource1.ResourceManager.GetString("myResource", System.Globalization.CultureInfo.GetCultureInfo("de"));
答案 1 :(得分:0)
如果这是WinForms,则可以为Control
类编写扩展方法。
public static class LocalizationExtension
{
public static void LoadLocalizedText(this Control ctrl)
{
ctrl.Text = "My loaded string";
}
}
通过这种方式,您可以定位从Control继承的所有控件,例如Button和Label。
您只需使用Button.LoadLocalizedText()
和Label.LocdLocalizedText()
等来调用它。