我创建了一个非常基本的控制台应用程序,它在幕后执行一些代码。在执行此操作时,它会生成一个自定义消息框(从技术上讲,它是一个Windows窗体),该消息框只显示一个标签,告诉用户请稍候。问题是标签从来没有显示过(它只是一个应该显示标签的大白框)。我尝试创建一个动态标签并将其放在那里,但这也不起作用。
该表单以以下方式显示:
public void DoSomething()
{
MyForm form = new MyForm();
form.Show();
try {
// Execute other logic
} finally { form.Close(); }
}我猜这与调用Show()有关,但我不敢肯定。我将日志放入日志中,看到它正在通过构造函数生成动态标签(通过Controls.Add(MyLabel)添加到表单),但它仍然没有显示任何标签。
发布于 2013-05-18 00:18:56
Form需要启动消息泵才能正确显示。这需要调用Application.Run。不幸的是,这将阻塞当前线程,直到“应用程序”完成,因此不能直接“进入”您的代码。
也就是说,如果你正在开发一个需要windows的应用程序,你应该考虑让它成为一个真正的windows应用程序而不是控制台应用程序。如果需要,您可以只隐藏主窗体,这样就可以让上面的代码正常工作。
https://stackoverflow.com/questions/16613682
复制相似问题