我的項目是一個控制檯客戶端。我從控制檯開始,然後顯示錶單。我使用下面的代碼來顯示一個空白表單(我將在後面添加控件)給用戶。但窗體顯示,但它卡住(不活動)。我該怎麼辦?在C#控制檯項目中啓動一個表單?
Console.WriteLine("Starting form");
Console_Client.Main mainform = new Main();
mainform.Show();
Console.ReadLine();
我的項目是一個控制檯客戶端。我從控制檯開始,然後顯示錶單。我使用下面的代碼來顯示一個空白表單(我將在後面添加控件)給用戶。但窗體顯示,但它卡住(不活動)。我該怎麼辦?在C#控制檯項目中啓動一個表單?
Console.WriteLine("Starting form");
Console_Client.Main mainform = new Main();
mainform.Show();
Console.ReadLine();
嘗試ShowDialog()
。
問題是您沒有運行消息循環。有兩種方法可以啓動一個。 ShowDialog()
有一個集成,以便工作。另一種方法是使用Application.Run()
,可以在Show()
調用之後使用,也可以使用表單作爲參數。
ShowDialog()
:
mainform.ShowDialog();
Application.Run()
沒有形式:
mainform.Show();
Application.Run();
Application.Run()
與以下形式:
Application.Run(mainform);
所有這些工作。
您需要啓動一個完整的應用程序,就像一個Windows窗體應用程序一般不會:
Console.WriteLine("Starting form");
Console_Client.Main mainform = new Main();
// This will start the message loop, and show the mainform...
Application.Run(mainform);
// This won't occur until the form is closed, so is likely no longer required.
// Console.ReadLine();
;也需要 – vishnu 2010-11-01 15:39:15
@vishnu:沒錯,或者需要完全合格。 – 2010-11-01 15:39:57
的ShowDialog()會在某些情況下工作,但是,沒有一個真正的消息泵,多種形式一些功能將會不像你期望的那樣行事。如果表單非常簡單,這就好了...... – 2010-11-01 15:35:09
使用'ShowDialog()'的作用與在'Application.Run()'之前在'Main'中打開一個登錄表單時的作用相同。是的,對於簡單的表單來說,這很好。使用System.Windows.Forms的 – 2010-11-01 15:36:53