我正在使用c#並擁有一個控制檯應用程序。現在,爲了集成GUI,我添加了一個Windows窗體應用程序。事情是,窗體窗體和控制檯應用程序需要進行通信,但在窗體窗體關閉之前,控制檯應用程序內部構建的功能不起作用。如何讓c#運行Windows窗體函數以及控制檯應用程序
它就像windows窗體重疊它。
我正在使用c#並擁有一個控制檯應用程序。現在,爲了集成GUI,我添加了一個Windows窗體應用程序。事情是,窗體窗體和控制檯應用程序需要進行通信,但在窗體窗體關閉之前,控制檯應用程序內部構建的功能不起作用。如何讓c#運行Windows窗體函數以及控制檯應用程序
它就像windows窗體重疊它。
從你寫的東西,我想我明白,你寫你的控制檯應用程序代碼後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框架服務器/客戶端。
感謝您的信息 – user3624894
只需轉到Solution屬性頁面,Common properties,啓動項目,即可控制午餐行爲。在那裏,您可以指定在動作部分首先運行哪個程序。
創建一個新的控制檯項目並添加對System.Windows.Forms
的引用。爲您的項目添加一個新表單。作爲一個例子,我在窗體中添加了一個按鈕,並將其設置爲DialogResult
至Ok
。
在程序的主要方法中,創建表單的實例並使用Show
或ShowDialog
將其打開。這裏有一個例子:
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窗體項目,右鍵單擊它,導航到屬性並切換「輸出型」到「控制檯應用程序」。
控制檯應用程序和Windows窗體應用程序有什麼關係?他們是在同一個項目中,還是在單獨的項目中?你能舉一些例子代碼嗎? – pmcoltrane
「他們需要溝通」和「功能(...)不起作用」是什麼意思?如果你不想同時調試2個程序,你將不得不運行2個visual studio。 – Rik
您也可以在這裏查看討論:http://stackoverflow.com/questions/3571627/show-hide-the-console-window-of-a-c-sharp-console-application –