强制Winform控件更新

时间:2015-05-25 03:40:10

标签: c# .net winforms

我有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中调用该函数。

我觉得我犯了一个错误,但我无法弄明白。我可以帮忙完成这项工作。

1 个答案:

答案 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表单的名称,请将其更改为任何内容。