如何解决C# - 从另一个类更改打开的表单中的标签文本
我正在使用具有语言支持的 WinForms 在 C# 中编写程序,这意味着用户可以例如将程序语言从英语更改为德语。
现在我有 Form1
和 Label1
和一个 Class1
。
Class1
有一个名为 Translate()
的公共无效方法,它应该翻译 Label1
的文本。
它通过在 Translate()
加载事件中执行 Form1
来实现,但这对我不起作用。
我在 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";
}
}
它可能不起作用,因为它在新表单上更改文本标签而不是在已打开的表单上更改它,但我不知道如何使用我已有的代码使其工作。
解决方法
按照建议,通过 from sklearn.model_selection import train_test_split
X_train,X_test,Y_train,Y_test = train_test_split(contraception_data.iloc[:,:-1],contraception_data.iloc[:,-1],test_size=0.5,random_state=1)
传递表单:
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";
}
}
可在 Form1 上公开访问。默认情况下,控件不可公开访问。要解决此问题,请将 Label1
的 Modifiers
属性更改为 public。
但真正的解决方案在于实施 Localization。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。