3

我有接受 args 的 Windows 应用程序,我使用它来设置窗口行为

问题是我需要在其中一些参数中传递文本,但我的应用程序将其视为多个参数,所以,这个:

"http://www.google.com/" contact 450 300 false "Contact Info" true "Stay Visible" true

实际上有11 个参数,而不是我期望的9 个。

将“联系信息”“保持可见”仅作为一个参数传递的诀窍是什么?

4

3 回答 3

6

你是直接从命令行运行它吗?如果是这样,我希望它可以正常工作。(顺便说一下,我假设您正在使用 Main 方法中的参数?)

例如,这是一个小型测试应用程序:

using System;

class Test
{
    static void Main(string[] args)
    {
        foreach (string arg in args)
        {
            Console.WriteLine(arg);
        }
    }
}

执行:

>test.exe first "second arg" third
first
second arg
third

这是一个控制台应用程序,但就传递给 Main 方法的内容而言,它与 WinForms 没有区别。

于 2009-01-21T11:12:59.167 回答
2

MSDN 说,它应该按照您提到的方式工作。

class CommandLine
{
    static void Main(string[] args)
    {
        // The Length property provides the number of array elements
        System.Console.WriteLine("parameter count = {0}", args.Length);

        for (int i = 0; i < args.Length; i++)
        {
            System.Console.WriteLine("Arg[{0}] = [{1}]", i, args[i]);
        }
    }
}
于 2009-01-21T11:15:04.217 回答
0

你是如何执行你的应用程序的?
如果您从另一个应用程序执行它,您可能忘记正确格式化参数字符串:

String arguments = "First \"Sec ond\" Third Fourth \"Fi fth\""

将有五个参数,而

String arguments = "First Sec ond Third Fourth Fi fth"

会有七个。

如果参数在快捷方式目标属性中,则同样适用:

"C:\My Path\MyApplication.exe" "Argument 1" Argument2 Argument3 "Argument 4"

代替

"C:\My Path\MyApplication.exe" Argument 1 Argument2 Argument3 Argument 4
于 2009-01-21T11:25:59.670 回答