在Windows窗体

时间:2015-11-18 12:26:55

标签: c# json winforms command-line-arguments

我有C #Windows表单应用程序,我正在做很多复选框,并将它们写入并读取到名为test.json的JSON格式文件。现在我想将test.json与program.exe一起使用,我的program.exe将在test.json中写入复选框。因此,我创建Load event handler并希望使用我的GetCommandLineArgs()

private void Form1_Load(object sender, EventArgs e)
{
    string[] args = Environment.GetCommandLineArgs();            
}

我知道我有2个参数。[0] - program.exe[1] - test.json。需要一些想法如何使其发挥作用。

我的问题是:

如何制作2个元素的args列表。其中0是program.exe,1是test.json。当有可能没有参数或只有一个参数时,如何使用args.length

2 个答案:

答案 0 :(得分:2)

  

如何制作2个元素的args列表。其中0是program.exe,1是test.json

要执行此操作,您可以通过打开项目属性窗口并导航到Debug选项卡从visual studio中进行调试,从那里可以指定所需的命令行参数,如下所示:

Entering command line arguments for debugging

您可以使用Environment.GetCommandLineArgs(),我认为这有点奇怪。它为您提供当前正在运行的可执行文件名称。所以在你的情况下,你最终会得到你所要求的。

[0] - program.exe and [1] - test.json
  

当有可能没有参数或只有一个参数时,如何使用args.Length。

这很简单,Environment.GetCommandLineArgs()会返回string[]。检查所需长度并相应处理。

var commandLineArgs = Environment.GetCommandLineArgs();
if (commandLineArgs.Length > 0)
{
    // Do something magical...
}
else
{
    // Nothing was passed in...
}

答案 1 :(得分:1)

这样的事情:

var cmdArgs = Environment.GetCommandLineArgs();

if (cmdArgs.Length < 2) 
{
    MessageBox.Show("No JSON file specified!");
}

var jsonFilename = cmdArgs[1];

如果您执行更复杂的命令行参数解析,我建议使用像this one这样的现有库。

<强>更新

您可以在此处附加事件处理程序(或创建一个新的事件处理程序):

enter image description here