C# 混合windows窗体和控制台应用程序,在窗体模式下不带控制台窗口
我想创建一个完整的混合应用程序,既可以作为C# 混合windows窗体和控制台应用程序,在窗体模式下不带控制台窗口,c#,winforms,user-interface,console-application,C#,Winforms,User Interface,Console Application,我想创建一个完整的混合应用程序,既可以作为Windows窗体也可以作为控制台应用程序。当我在没有参数或不在控制台中执行它时,我希望应用程序打开GUI并离开控制台,就像从控制台调用普通Windows窗体应用程序一样,但在通知某些参数时,通过控制台响应用户并与他交互,如接受条款和条件或确认文件覆盖。可能吗 注意:我不介意在运行GUI时有控制台输出,但我希望在GUI上运行时控制台保持隐藏,在作为控制台运行时没有GUI 注意 在中提出的解决方案(创建表单项目,然后更改为控制台)没有引起我的注意,因为当从
Windows窗体
也可以作为控制台应用程序
。当我在没有参数或不在控制台中执行它时,我希望应用程序打开GUI并离开控制台,就像从控制台调用普通Windows窗体应用程序一样,但在通知某些参数时,通过控制台响应用户并与他交互,如接受条款和条件或确认文件覆盖。可能吗
注意:我不介意在运行GUI时有控制台输出,但我希望在GUI上运行时控制台保持隐藏,在作为控制台运行时没有GUI
注意
在中提出的解决方案(创建表单项目,然后更改为控制台)没有引起我的注意,因为当从资源管理器调用应用程序时,它会打开一个控制台窗口。WinForms和console应用程序之间的区别在于,它们的编译方式略有不同(请参见此)。控制台应用程序在清单中具有以下标志: .子系统0x0003//WINDOWS\u CUI 和WinForms应用程序包括以下内容: .子系统0x0002//WINDOWS\u GUI 与这个话题相关的问题很多。例如,请看这个。 一般来说,据我所知,没有理想的解决方案,但有些解决方案在某种程度上是有效的。例如,试试这个:
WinForms和Console应用程序之间的区别在于,它们的编译方式略有不同(见下图)。控制台应用程序在清单中具有以下标志: .子系统0x0003//WINDOWS\u CUI 和WinForms应用程序包括以下内容: .子系统0x0002//WINDOWS\u GUI 与这个话题相关的问题很多。例如,请看这个。 一般来说,据我所知,没有理想的解决方案,但有些解决方案在某种程度上是有效的。例如,试试这个:
谢谢你,迈克!这并没有满足我的愿望,但可以解释为什么我不能以我想要的方式实现我的愿望。谢谢你,迈克尔!这并没有满足我的愿望,但可以解释为什么我不能以我想要的方式实现我的愿望。
[STAThread]
private static void Main(string[] args)
{
if (args.Length == 0)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
else
{
AllocateConsole();
Console.WriteLine("I'm a console application");
//...
FreeConsole();
}
}