Winforms输出到命令行

本文关键字:命令行 输出 Winforms | 更新日期: 2023-09-27 18:18:20

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

我尝试了这个线程的建议

c#应用程序GUI和命令行

但是我没有看到我的控制台。当我通过cmd.exe运行应用程序时,在cmd.exe的命令行中写入消息。谁能告诉我哪里做错了吗?

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

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

else部分仍然有效。但是,如果部分使用cmd.exe来运行应用程序,或者当我使用properties ->debug->命令行参数并在调试时给它提供参数时,什么也不会发生。我不知道我做错了什么。

Winforms输出到命令行

我想你创建了你的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,但这将显示一个新的控制台窗口,而不是现有的一个,您正在使用它来运行您的应用程序。