當我運行以下代碼時,這兩個表單「掛起」。任何想法爲什麼?在控制檯應用程序中實例化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