当我运行以下代码时,这两个表单“挂起”。任何想法为什么?在控制台应用程序中实例化WinForm
static void Main()
{
Form f1 = new Form();
f1.Show();
Form f2 = new Form();
f2.Show();
Console.ReadLine();
}
当我运行以下代码时,这两个表单“挂起”。任何想法为什么?在控制台应用程序中实例化WinForm
static void Main()
{
Form f1 = new Form();
f1.Show();
Form f2 = new Form();
f2.Show();
Console.ReadLine();
}
基本上,您需要致电Application.Run
以处理窗口的消息。
如果其中一种形式是您的“主窗口”,即您希望窗口关闭时应用程序退出,则应使用Application.Run(form)
。
如果你想要几个窗口,但都不是特别重要,只需使用Application.Run()
,然后通过调用Application.Exit()
来决定何时退出应用程序。
另一种替代方法是在第二种形式上调用Form.ShowDialog
。 ShowDialog
有自己的消息泵,所以当第二个窗口打开时,消息将被处理两个窗口。但在这种情况下,当您调用ShowDialog
的窗口关闭时,其他窗口将被冻结。
因为您的线程中没有消息循环。
要进行形式工作,您必须打开它通过Application.Run(form)
(MSDN Link)
你对这些形式的任何交互或者是他们的空测试的呢?
我原以为代码会在与控制台窗口相同的线程上启动窗体 - 并且Show()
阻塞,直到窗体显示出来。也可能是控制台窗口阻塞,给你一个死锁。如果可以的话,我希望一旦你关闭了f1,控制台就会继续执行。
编辑:其他答案表明我完全错了。忽略我所说的。无论如何,我认为它实际上是ShowDialog()
在一个对话窗口上,而不是Show()
。
提示:查看Windows应用程序中的主要方法,看看它有哪些额外的东西来处理表单。你也需要这个。 :) – 2010-12-22 13:48:58