1

我创建了一个非常基本的控制台应用程序,它在幕后执行一些代码。在执行此操作时,它会生成一个自定义消息框(从技术上讲,它是一个 Windows 窗体),它只显示一个标签,告诉用户请稍候。问题是标签从不显示(它只是一个大白框,标签应该在哪里)。我尝试创建一个动态标签并将其放在那里,但这也不起作用。

表格以下列方式显示:

public void DoSomething()
{
   MyForm form = new MyForm();
   form.Show();
   try {
   // Execute other logic
   } finally { form.Close(); }
}

我猜这与调用 Show() 有关,但我并不肯定。我输入日志,看到它正在通过构造函数,生成动态标签(通过 Controls.Add(myLabel) 添加到表单中),但它仍然没有显示任何标签。

4

1 回答 1

2

AForm需要启动消息泵才能正确显示。这需要调用Application.Run。不幸的是,这将阻塞当前线程,直到“应用程序”完成,因此无法仅“插入”您的代码。

话虽如此,如果您正在开发一个需要 Windows 的应用程序,您应该考虑将其设为真正的 Windows 应用程序而不是控制台应用程序。如果需要,您可以只隐藏主窗体,这将允许您上面的代码正常工作。

于 2013-05-17T16:18:55.643 回答