如何在表单启动后更新表单?

时间:2017-02-03 10:24:03

标签: c# python .net winforms ironpython

是否可以在启动后更新winform。

例如。

import clr
clr.AddReference("System")
clr.AddReference("System.Windows.Forms")
from System.Windows.Forms import (Application, Form, StatusBar)

form = Form()
form.sb = StatusBar()
form.sb.Parent = form
form.sb.Text = "Demo"
Application.Run(form)
form.sb.Text = "Test"

我能够看到" Demo"但不是"测试"。

如何在Application.Run后更改状态栏?

3 个答案:

答案 0 :(得分:1)

只需将代码添加到加载事件

即可
 private void Form_Load(object sender, EventArgs e)
    {
       sb.Text = "Test";
      Application.DoEvents();
    }

调用do事件以强制重绘表单。

<强> VB

Private Sub Form_Load(Byval Sender As Object, Byval e As EventArgs)
      sb.Text = "Test"
      Application.DoEvents()
End Sub

答案 1 :(得分:1)

Application.Run(form)在当前线程上启动标准应用程序循环。这意味着在表单关闭之前,行form.sb.Text = "Test"实际上不会执行任何操作。您可以使用form.Show()显示表单,然后就可以更新它。

你可以做两件事之一。首先,正如Wheels73建议的那样,在表单加载事件上添加一个事件处理程序。您可以使用以下行完成此操作。

def form_load(sender, e):
    sender.sb.Text = 'Test'

form.Load += form_load
Application.Run(form)

您还可以为表单创建一个类,并在其中添加事件处理程序。我建议给它一个读数:http://www.voidspace.org.uk/ironpython/winforms/

答案 2 :(得分:0)

您是否尝试过me.refresh()form.refresh()