winforms输出到命令行

时间:2013-06-13 16:10:15

标签: c# winforms

我有一个winforms应用程序。我想从命令行运行.exe并将输出从其中一个输出文本框重定向到命令行。我不想启动winform应用程序只是在后台运行逻辑。

我尝试了这个帖子的建议

C# application both GUI and commandline

但是当我通过cmd.exe运行应用程序时,我在cmd.exe的命令行中没有看到任何console.writeline消息。任何人都可以指导我可能做错了什么吗?

我有一个执行此逻辑的if语句:

  if(args.Length >0)
   {
     Console.writeline("this has arguments");
     new Mainform();
   }
  else
   {
    Application.EnableVisualStyles();
    Application.Run(new MainForm());
   }

其他部分仍然有效。但在if部分使用cmd.exe运行应用程序或使用属性 - > debug->命令行参数并在调试时运行参数时,没有任何反应。我不知道我做错了什么。

1 个答案:

答案 0 :(得分:0)

我认为您创建了Windows Forms project并粘贴了代码?如果是这样,它就无法运作。你必须创建你的Console project,这是我测试过的代码,就像魅力一样,除了当显示表格(GUI模式)时,控制台仍在那里,关闭该控制台也将关闭你的表格:

class Program
{
    static void Main(string[] args)
    {            
            if (args.Length == 0)
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(new Form1());
            }
            else //Process command lines
            {
                Console.WriteLine("Please enter some command.");
                string cmd = Console.ReadLine();
                Console.WriteLine("You entered: " + cmd);
            }            
    }
}

由于Console project没有自动为System.Windows.Forms.dll添加引用,因此您必须手动执行此操作才能在该控制台项目中创建表单。关键是您已将代码应用于Winforms project,而代码应位于Console project中。我知道只有一种方法可以显示winforms应用程序中的控制台窗口正在运行cmd.exe但是会​​显示一个新的控制台窗口,而不是用于运行应用程序的现有控制台窗口。