我有2个Form1和Form2。在Form1中,我有一个按钮,可以在按钮单击中打开Form2。在Form2中,它用于为Form1中的标签文本进行一些设置。关闭form2时,Form1中的标签文本将根据设置进行更新,但我可以更新标签文本。下面是更新Form1中标签文本的代码。我对文本进行硬编码以模拟情况。
Form1中
public void languageChange()
{
labelControl5.Text = "AAAAAA";
labelControl5.Invalidate();
labelControl5.Update();
labelControl5.Refresh();
Application.DoEvents();
}
在form2中,我有以下代码来激活Form1中的languageChange函数。
private void innoLanguage_FormClosed(object sender, FormClosedEventArgs e)
{
Main_new main = new Main_new();
main.languageChange();
}
当form2关闭但它不更新标签文本时,它已在Form1中调用该函数。
我觉得我犯了一个错误,但我无法弄明白。我可以帮忙完成这项工作。
答案 0 :(得分:1)
首先,当您更改Text变量时,不需要使Label无效,它会自动重绘控件。
其次,当Form2
关闭时,您创建了一个名为Main_new
的 new languageChange()
,但实际上并未显示或显示该表单。我不确定情况是什么,但是如果已经打开了Main_new
表单,则不需要创建一个新表单,只需获取Form2
的父表(这将是{{} 1}}已经打开),将其投放为Main_new
,然后在 上调用Main_new
。
示例强>
languageChange()
如果private void innoLanguage_FormClosed(object sender, FormClosedEventArgs e)
{
((Main_new)this.Parent).languageChange();
}
不是打开的Main_new
表单的名称,请将其更改为任何内容。