将参数传递到窗体应用程序

3

我有一个接收参数的Windows应用程序,我使用它来设置窗口行为

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

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

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

如何将"contact info""stay visible"合并为一个参数?

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没有区别。


约翰,这是作弊...先抢答了 :-) 但第一次只给了一半的答案 :-) - Michael Prewecki
@Michael:我有这个程序,但是它在另一台电脑上。我必须回答和编辑才能把它全部放进去 :) - Jon Skeet
我实际上传递了“保持连接”:( - 我将其复制/粘贴到构建参数中...也许这就是为什么iPhone没有复制/粘贴功能的原因;) 谢谢Jon。 - balexandre

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]);
        }
    }
}

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接