我在主表单上创建了一个状态栏,并在其中创建了一个标签。我在这里打开另一种形式(MdiContainer是真的)。为了打开我在构造函数中传递主窗体的对象,即这。在那里,我正在更新标签的文本,但它没有得到更新。 我也试过了无效功能。
答案 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',因此我的文本显示(但是已中继)。