2010-11-01 37 views
4

我的項目是一個控制檯客戶端。我從控制檯開始,然後顯示錶單。我使用下面的代碼來顯示一個空白表單(我將在後面添加控件)給用戶。但窗體顯示,但它卡住(不活動)。我該怎麼辦?在C#控制檯項目中啓動一個表單?

Console.WriteLine("Starting form"); 
Console_Client.Main mainform = new Main(); 
mainform.Show(); 
Console.ReadLine(); 

回答

9

嘗試ShowDialog()

問題是您沒有運行消息循環。有兩種方法可以啓動一個。 ShowDialog()有一個集成,以便工作。另一種方法是使用Application.Run(),可以在Show()調用之後使用,也可以使用表單作爲參數。

  1. ShowDialog()

    mainform.ShowDialog(); 
    
  2. Application.Run()

    沒有形式:

    mainform.Show(); 
    Application.Run(); 
    
  3. Application.Run()

    與以下形式:

    Application.Run(mainform); 
    

所有這些工作。

+2

的ShowDialog()會在某些情況下工作,但是,沒有一個真正的消息泵,多種形式一些功能將會不像你期望的那樣行事。如果表單非常簡單,這就好了...... – 2010-11-01 15:35:09

+0

使用'ShowDialog()'的作用與在'Application.Run()'之前在'Main'中打開一個登錄表單時的作用相同。是的,對於簡單的表單來說,這很好。使用System.Windows.Forms的 – 2010-11-01 15:36:53

5

您需要啓動一個完整的應用程序,就像一個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(); 
+1

;也需要 – vishnu 2010-11-01 15:39:15

+0

@vishnu:沒錯,或者需要完全合格。 – 2010-11-01 15:39:57

相關問題