2015-11-03 80 views
0

美好的一天, 我有几个方法,在我的表单代码中花了很长时间。我想显示一条消息(在另一个表单上使用label)以通知用户正在发生的事情,因此他们不会假定程序没有响应。从另一个表格更改标签文本

我不想使用MessageBox.Show(),因为我想有一个对象,可以在需要时更改文本,并在用户无法关闭的情况下进行处置。

到目前为止,我的财产以后这样的:在我的主要形式有:

private void Foo() 
{ 
    Form2 infoPopup = new Form2(); 
    infoPopup.setText("running function1"); 
    infoPopup.Show(); 
    slowFunction1(); 
    infoPopup.setText("running function2"); 
    slowFunction2(); 
    infoPopup.Dispose(); 
} 

您可能已经猜到,形式2我有这样的功能:

private void setText(string message) 
{ 
    this.label1.Text=message; 
} 

不幸的是这个解决方案只部分工作。我确实收到了form2弹出消息,但form2中的标签内容不变。

感谢

+1

尝试在更新文本的方法中调用'label1.Refresh();'。 – SplittyDev

+0

明确简洁的答案。解决了这个问题。谢谢。 – ForeverStudent

回答

1

当你的应用程序正忙,重绘控制不是一个优先事项。因此,除非您的代码在工作线程中运行,否则UI将不会更新可靠。

尽管你可以强制更新。控件和表单都有一个Update()方法。它强制对象重绘自己。

根据您的具体情况,您可能还想研究Invalidate()Refresh()方法。