【发布时间】:2019-03-11 19:42:43
【问题描述】:
所以我有模板 C# windows 窗体,并将 debugInstructionsLabel 标签公开,以便我可以从窗体外部对其进行编辑,然后在 main 中添加几行:
namespace test {
static class Program {
[STAThread]
static void Main() {
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Form1 form = new Form1();
Application.Run(form);
form.debugInstructionsLabel.Text += "Aaaaaaa";
form.Refresh();
form.Update();
form.Invalidate();
Application.DoEvents();
}
}
}
但是,这实际上并没有改变表单中的任何内容,我将如何更新文本?
编辑:好像Application.Run 没有返回,我应该创建另一个线程还是处理表单类中的所有内容?
【问题讨论】:
-
Application.Run()启动一个 Windows 消息泵,该泵在应用程序终止之前不会终止。届时,该函数将返回。如果要修改表单,请在调用Application.Run之前修改其属性见stackoverflow.com/questions/2222365/what-is-a-message-pump -
@Amy 或者只使用
form.Show()显示表单,根本不要使用Application.Run。 -
@LuccaFerri 在这种情况下,不打电话给
Application.Run并不能真正回答问题或解决任何问题。你是对的,这是一个选项。 -
@Amy 对不起我的无知,但我可以从他的代码中了解到,他正在使用控制台应用程序,并将在他的控制台应用程序运行时使用它来更新表单。我没有看到在那里使用 Application.Run 的意义,因为它应该挂起线程。
-
他没有使用控制台应用程序。每个 winforms 应用程序都有一个
main方法。Application.Run和form.Show基本上是等价的。