如何使用控制台应用程序创建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