如何将命令行参数传递给WinForms应用程序?

MRF*_*ius 94 c# command-line winforms

我有两个不同的WinForms应用程序,AppA和AppB.两者都运行.NET 2.0.

在AppA中我想打开AppB,但我需要将命令行参数传递给它.如何使用我在命令行中传递的参数?

这是我目前在AppB中的主要方法,但我认为你不能改变它吗?

  static void main()
  {
  }
Run Code Online (Sandbox Code Playgroud)

小智 177

使用winforms应用程序的args的最佳方法是使用

string[] args = Environment.GetCommandLineArgs();
Run Code Online (Sandbox Code Playgroud)

您可以将此与使用枚举相结合,以通过代码库巩固阵列的使用.

"你可以在应用程序的任何地方使用它,你不仅限于在main()方法中使用它,就像在控制台应用程序中一样."

发现于:HERE

  • 数组中的第一个元素包含正在执行的程序的文件名.如果文件名不可用,则第一个元素等于String.Empty.其余元素包含在命令行中输入的任何其他标记. (23认同)

Tho*_*mas 113

static void Main(string[] args)
{
  // For the sake of this example, we're just printing the arguments to the console.
  for (int i = 0; i < args.Length; i++) {
    Console.WriteLine("args[{0}] == {1}", i, args[i]);
  }
}
Run Code Online (Sandbox Code Playgroud)

然后,参数将存储在args字符串数组中:

$ AppB.exe firstArg secondArg thirdArg
args[0] == firstArg
args[1] == secondArg
args[2] == thirdArg
Run Code Online (Sandbox Code Playgroud)

  • 输入:"whatever.exe -v foo/lol nisp".输出:args [0] =" - v"; args [1] ="foo"; args [2] ="/ lol"; args [3] ="nisp"; 什么可以更容易? (6认同)
  • 看来 args[0] 是正在运行的应用程序的完整路径和 exe 名称,args[1] 是第一个参数。 (2认同)

Jar*_*Par 12

您可以通过访问Environment.CommandLine属性来获取任何.Net应用程序的命令行.它将命令行作为单个字符串,但解析您正在寻找的数据应该不是非常困难.

具有空Main方法不会影响此属性或其他程序添加命令行参数的能力.

  • 或者使用Environment.GetCommandLineArgs()返回一个字符串数组,就像Main(string [] args)一样 (26认同)

Sar*_*avu 10

考虑您需要开发一个程序,您需要通过该程序传递两个参数.首先,您需要打开Program.cs类并在Main方法中添加参数,如下所示,并将这些参数传递给Windows窗体的构造函数.

static class Program
{    
   [STAThread]
   static void Main(string[] args)
   {            
       Application.EnableVisualStyles();
       Application.SetCompatibleTextRenderingDefault(false);
       Application.Run(new Form1(args[0], Convert.ToInt32(args[1])));           
   }
}
Run Code Online (Sandbox Code Playgroud)

在Windows窗体类中,添加一个参数化构造函数,它接受来自Program类的输入值,如下所示.

public Form1(string s, int i)
{
    if (s != null && i > 0)
       MessageBox.Show(s + " " + i);
}
Run Code Online (Sandbox Code Playgroud)

要对此进行测试,可以打开命令提示符并转到放置此exe的位置.给出文件名,然后是parmeter1 parameter2.例如,见下文

C:\MyApplication>Yourexename p10 5
Run Code Online (Sandbox Code Playgroud)

从上面的C#代码,它将提示具有值的Messagebox p10 5.


小智 7

你使用这个签名:(在c#中)static void Main(string [] args)

本文也可以帮助解释主要功能在编程中的作用:http://en.wikipedia.org/wiki/Main_function_ ( programming )

这是一个小例子:

class Program
{
    static void Main(string[] args)
    {
        bool doSomething = false;

        if (args.Length > 0 && args[0].Equals("doSomething"))
            doSomething = true;

        if (doSomething) Console.WriteLine("Commandline parameter called");
    }
}
Run Code Online (Sandbox Code Playgroud)