我创建了一个非常基本的控制台应用程序,它在幕后执行一些代码。虽然它正在这样做,它会生成一个自定义消息框(技术上是一个Windows窗体),只显示一个标签告诉用户请等待。问题是显示标签NEVER(它只是一个标签所在的大白框)。我尝试创建一个动态标签并将其放在那里,但这也不起作用。
表格以下列方式显示:
public void DoSomething()
{
MyForm form = new MyForm();
form.Show();
try {
// Execute other logic
} finally { form.Close(); }
}
我猜这与调用Show()有关,但我并不积极。我输入日志并看到它正在通过构造函数,生成动态标签(通过Controls.Add(myLabel)添加到表单中),但它仍然没有显示任何标签。
答案 0 :(得分:2)
Form
需要启动消息泵才能正确显示。这需要调用Application.Run。不幸的是,这将阻止当前线程,直到“应用程序”完成,因此无法“插入”您的代码。
话虽这么说,如果你正在开发一个需要windows的应用程序,你应该考虑把它变成一个真正的Windows应用程序而不是一个控制台应用程序。如果需要,您可以隐藏主表单,这样就可以使上面的代码正常工作。