如何更新状态条标签上显示的文本

时间:2011-10-05 11:54:26

标签: c# .net winforms

我在主表单上创建了一个状态栏,并在其中创建了一个标签。我在这里打开另一种形式(MdiContainer是真的)。为了打开我在构造函数中传递主窗体的对象,即这。在那里,我正在更新标签的文本,但它没有得到更新。 我也试过了无效功能。

3 个答案:

答案 0 :(得分:8)

我也有这个问题。修复是添加一行触发事件的代码(参见下面的第二行)

MainForm.mainStatusLabel.Text = "Importing data file" //see next line
Application.DoEvents()

我不完全理解为什么会这样,但我的猜测是VB不会在方法中处理应用程序范围的事件,除非你告诉它。更改文本属性时,这是一个事件。所以VB会(我猜)在处理事件之前等到方法结束 - 除非你专门告诉它使用Application.DoEvents()处理所有事件

答案 1 :(得分:2)

不是将MainForm的实例传递给ChildForm,而是在ChildForm中定义一个自定义事件,使用您要显示的消息(作为参数)引发事件,然后在MainForm中和事件处理程序中订阅事件使用消息更新控件文本。您可能还需要检查Control.InvokeRequired。

答案 2 :(得分:1)

我也有问题,在我的情况下,因为文本太长而无法显示(包含异常消息。)我将SizingGrip属性设置为'False',因此我的文本显示(但是已中继)。