C# - 从另一个 Class 更改打开的表单中的标签文本
C# - Change Label Text in opened Form from another Class
我正在使用具有语言支持的 WinForms 在 C# 中编写程序,这意味着用户可以将程序语言从英语更改为德语。
现在我有 Form1
和 Label1
以及 Class1
。
Class1
有一个名为 Translate()
的 public 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";
}
}
它可能不起作用,因为它在新表单中更改了文本标签,而不是在已经打开的表单中更改它,但我不知道如何使用我已有的代码使其工作。
按照建议,通过 this
:
传递表单
private void Form1_Load(object sender, EventArgs e)
{
Class1 c1 = new Class1();
c1.Translate(this));
}
在Translate()
中:
public void Translate(Form1 f1)
{
if (Language.Equals(1))
{
f1.Label1.Text = "English Translated Text";
}
else if(Language.Equals(2))
{
f1.Label1.Text = "German Translated Text";
}
}
*但是,这假设 Label1
可以在 Form1 上 public 访问。默认情况下 public 无法访问控件。要解决此问题,请将 Label
的 Modifiers
属性 更改为 public。
但真正的解决方案在于实施 Localization。
我正在使用具有语言支持的 WinForms 在 C# 中编写程序,这意味着用户可以将程序语言从英语更改为德语。
现在我有 Form1
和 Label1
以及 Class1
。
Class1
有一个名为 Translate()
的 public 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";
}
}
它可能不起作用,因为它在新表单中更改了文本标签,而不是在已经打开的表单中更改它,但我不知道如何使用我已有的代码使其工作。
按照建议,通过 this
:
private void Form1_Load(object sender, EventArgs e)
{
Class1 c1 = new Class1();
c1.Translate(this));
}
在Translate()
中:
public void Translate(Form1 f1)
{
if (Language.Equals(1))
{
f1.Label1.Text = "English Translated Text";
}
else if(Language.Equals(2))
{
f1.Label1.Text = "German Translated Text";
}
}
*但是,这假设 Label1
可以在 Form1 上 public 访问。默认情况下 public 无法访问控件。要解决此问题,请将 Label
的 Modifiers
属性 更改为 public。
但真正的解决方案在于实施 Localization。