![](/img/trans.png)
[英]C#: How can i change the text of a label thats in form1 from another class?
[英]C# - Change Label Text in opened Form from another Class
我正在使用具有语言支持的 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";
}
}
它可能不起作用,因为它将文本 Label 更改为新表单,而不是在已打开的表单上更改它,但我不知道如何使用我已有的代码使其工作。
按照建议,通过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 上公开访问。 默认情况下,控件不可公开访问。 要解决此问题, Label
的Modifiers
属性更改为 public。
但真正的解决方案在于实施Localization 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.