如何使用控制檯應用程序創建Windows窗體?就像我運行控制檯應用程序時,它會顯示一個窗體(窗體)。任何人都可以幫助我?產生窗體(Windows窗體)的控制檯應用程序?
回答
它不直接支持沒有。
你可以做的是有兩個獨立的應用程序,一個窗體和一個控制檯。從表單1啓動控制檯,並在應用程序之間傳遞數據。如果你想設置的形式是「內部」的控制檯應用程序,你可以使用
http://msdn.microsoft.com/en-us/library/aa984420%28v=vs.71%29.aspx
首先,你要明白,在Windows窗口的工作方式。每個窗口化的程序管理一個稱爲消息隊列的東西。消息是來自系統(和其他應用程序)的信息,表示發生了某些事情,例如某人按下了某個鍵或移動了一個鼠標,這樣窗口就可以正確地響應該用戶的操作。
處理消息(包括將它們分發到適當的窗口)是程序的責任,並且在Windows窗體應用程序中通過一些內部消息處理循環在Application.Run方法(或附近的某個地方)中完成。但是如果你想在你的控制檯應用程序中顯示一個窗口,有人必須爲這個過程負責,否則窗口將無法正常工作(實際上,它們根本無法工作)。
如果您有模式顯示一個窗口,它將處理郵件來它本身,這樣你就可以直接從myWindow.ShowDialog
代碼中調用,並且將工作 - 但直到窗口關閉將鎖定控制檯輸入了。這意味着,您將能夠通過Console.WriteLine
將文本發送到控制檯,但您將無法 - 例如 - 通過Console.ReadLine
向用戶詢問文字,直到窗口關閉。
class Program
{
public static void Main(string[] args)
{
System.Windows.Forms.Form f = new System.Windows.Forms.Form();
f.Click += (o, e) => { Console.WriteLine("Clicked!"); };
f.ShowDialog();
Console.ReadLine();
}
}
// (run, then click on a form to observe result)
另一方面,如果您想以非對話方式顯示窗口,事情會變得複雜。我想到的最簡單的事情是創建Windows窗體應用程序,並使用AllocConsole爲應用程序創建單獨的控制檯窗口(例如,Blender會這樣做)。另一種選擇是創建兩個不同的應用程序 - 控制檯和Windows窗體,從第一個開始運行並通過某種機制(命名管道,共享全局內存,Windows消息,TCP/IP等)管理它們的通信。
- 1. 隱藏Windows窗體應用程序中的控制檯窗口
- 2. 從Windows窗體應用程序C控制檯應用程序#
- 3. 與控制檯應用程序Windows窗體應用程序
- 4. 控制檯的Windows窗體
- 5. 在窗體窗體應用程序控制臺
- 6. 從控制檯應用程序到.NET Windows窗體
- 7. Windows窗體VS控制檯應用程序
- 8. 從Windows窗體運行控制檯應用程序
- 9. 使Windows窗體應用程序塊控制檯
- 10. 從控制檯應用程序到Windows窗體GUI問題
- 11. 如何在控制檯應用程序中的Windows窗體應用程序中指定最後一個窗體?
- 12. 轉換的Win32控制檯應用程序Windows窗體應用程序
- 13. 顯示在Windows窗體應用程序中的控制檯窗口
- 14. 通過Windows窗體應用程序啓用控制檯應用程序
- 15. Windows窗體應用程序
- 16. 如何連接控制檯應用程序和Windows窗體應用程序C#
- 17. CSharpCodeProvider輸出控制檯應用程序,如Windows窗體應用程序
- 18. 如何將控制檯應用程序更改爲Windows窗體應用程序?
- 19. 什麼使得應用程序控制臺或Windows窗體應用程序?
- 20. 在Windows窗體應用程序中創建控制檯應用程序
- 21. 如何從Windows窗體應用程序在C#中關閉控制檯窗口?
- 22. C#中的控制檯和Windows窗體#
- 23. 在窗體窗體應用程序中重複控制
- 24. C#Windows窗體.Net和DOS控制檯
- 25. Process.WaitForExit()在控制檯VS Windows窗體
- 26. NET Windows窗體應用程序的多線程控制
- 27. 帶有ActiveX控件的Windows窗體應用程序只在生產環境中關閉子窗體
- 28. 在控制檯應用程序中的WPF窗體
- 29. VS 2015年窗體/控制檯功能的應用程序
- 30. 試用窗體窗體應用程序
什麼你的意思是「不直接支持」?添加對'System.Windows.Forms'的引用,然後在你的控制檯應用程序中寫入:'System.Windows.Forms.Form f = new System.Windows.Forms.Form(); f.ShowDialog();' – Spook
問題是措辭「我如何使用控制檯應用程序創建Windows窗體?」你不能直接這樣做。而且你也不能把它們作爲一個窗口連接在一起,但是你可以(正如我指出的那樣)製造幻覺。 編輯:我不應該說你不能,一個可能,但我不知道任何傳統的手段。 – Emz
實例化窗體並調用ShowDialog可以更常規嗎?你甚至可以很簡單地添加一個Windows窗體到控制檯項目並在VS設計器中進行編輯。我沒有看到這裏的「不直接支持」。 「不常見」,也許。順便說一句,相反需要〜1行代碼(向WF應用程序添加控制檯支持) – Spook