【发布时间】:2021-06-28 10:22:06
【问题描述】:
我正在使用具有语言支持的 WinForms 用 C# 编写程序,这意味着用户可以将程序语言从英语更改为德语。
现在我有 Form1 和 Label1 和 Class1。
Class1 有一个名为 Translate() 的公共 void 方法,它应该翻译 Label1 的文本。
它通过在 Form1 加载事件中执行 Translate() 来做到这一点,但这对我不起作用。
我在Form1 中使用以下代码进行了尝试:
private void Form1_Load(object sender, EventArgs e)
{
new Class1(Translate());
}
Class1中的代码:
public void Translate()
{
if (Language.Equals(1))
{
new Form1().Label1.Text = "English Translated Text";
}
else if(Language.Equals(2))
{
new Form1().Label1.Text = "German Translated Text";
}
}
它可能不起作用,因为它在新表单上更改了文本标签,而不是在已打开的表单上更改它,但我不知道如何使用我已有的代码使其工作。
【问题讨论】:
-
首先,这不是正确的方法。但是,如果您希望它以这种方式进行更改,请将 form1 实例传递给 Translate 方法。您可以使用“this”来获取当前表单。在此处和其他地方阅读有关 WinForms 应用程序本地化的一些文本。您将更深入地了解它应该如何工作。如果您希望此解决方案起作用 - 请阅读有关传递表单实例的信息...
-
为什么只使用您的
Form1来编写这些代码而不是使用单独的类?