2014-06-10 117 views
-1

我正在使用c#並擁有一個控制檯應用程序。現在,爲了集成GUI,我添加了一個Windows窗體應用程序。事情是,窗體窗體和控制檯應用程序需要進行通信,但在窗體窗體關閉之前,控制檯應用程序內部構建的功能不起作用。如何讓c#運行Windows窗體函數以及控制檯應用程序

它就像windows窗體重疊它。

+1

控制檯應用程序和Windows窗體應用程序有什麼關係?他們是在同一個項目中,還是在單獨的項目中?你能舉一些例子代碼嗎? – pmcoltrane

+0

「他們需要溝通」和「功能(...)不起作用」是什麼意思?如果你不想同時調試2個程序,你將不得不運行2個visual studio。 – Rik

+0

您也可以在這裏查看討論:http://stackoverflow.com/questions/3571627/show-hide-the-console-window-of-a-c-sharp-console-application –

回答

0

從你寫的東西,我想我明白,你寫你的控制檯應用程序代碼後Application.Run(new Form1()); 等你的代碼可能是這樣的:

static class Program 
{ 
    /// <summary> 
    /// The main entry point for the application. 
    /// </summary> 
    [STAThread] 
    static void Main() 
    { 
     Application.EnableVisualStyles(); 
     Application.SetCompatibleTextRenderingDefault(false); 
     Application.Run(new Form1()); 

     //Some more things to do here 
    } 
} 

這是不是要走的路。一個項目可以是一個控制檯應用程序。或者一個winforms項目。 如果您需要它們一起運行,請使用兩個項目。 如果您需要它們進行通信,請使用通信對象,例如WCF框架服務器/客戶端。

+0

感謝您的信息 – user3624894

0

只需轉到Solution屬性頁面,Common properties,啓動項目,即可控制午餐行爲。在那裏,您可以指定在動作部分首先運行哪個程序。

0

創建一個新的控制檯項目並添加對System.Windows.Forms的引用。爲您的項目添加一個新表單。作爲一個例子,我在窗體中添加了一個按鈕,並將其設置爲DialogResultOk

在程序的主要方法中,創建表單的實例並使用ShowShowDialog將其打開。這裏有一個例子:

static void Main(string[] args) 
{ 
    Console.WriteLine("Opening window..."); 

    var result = new TestForm().ShowDialog(); 

    if (result == System.Windows.Forms.DialogResult.OK) 
     Console.WriteLine("Form closed by button."); 
    else 
     Console.WriteLine("Form closed otherwise."); 

    Console.ReadLine(); 
} 

從你的表格程序中的任何位置,您可以使用靜態Console類來訪問控制檯。下面是打印從窗體的構造一些狀態信息的例子:

public partial class TestForm : Form 
{ 
    public TestForm() 
    { 
     InitializeComponent(); 

     Console.WriteLine("Form initialized."); 
    } 
} 

如果您已經創建您的項目類庫或Windows窗體項目,右鍵單擊它,導航到屬性並切換「輸出型」到「控制檯應用程序」。

相關問題