【问题标题】:changing label text of form from another从另一个更改表单的标签文本
【发布时间】:2015-11-04 05:22:43
【问题描述】:

美好的一天, 我有几个方法在我的表单代码中需要很长时间。我想显示一条消息(在另一个表单上使用label)来通知用户正在发生的事情,所以他们不认为程序没有响应。

我不想使用MessageBox.Show(),因为我想要一个对象,我可以更改其文本并在需要时进行处理,而用户无法关闭它。

到目前为止,我有这样的东西:在我的主要形式中:

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

你可能猜到了,在 Form 2 中我有一个这样的函数:

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

不幸的是,该解决方案仅部分有效。我确实收到了form2 弹出消息,但form2 中的标签内容没有改变。

谢谢

【问题讨论】:

  • 尝试在更新文本的方法中调用label1.Refresh ();
  • 清晰简洁的答案。解决了这个问题。谢谢。

标签: c# .net winforms


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-28
    • 2017-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多