我有接受 args 的 Windows 应用程序,我使用它来设置窗口行为
问题是我需要在其中一些参数中传递文本,但我的应用程序将其视为多个参数,所以,这个:
"http://www.google.com/" contact 450 300 false "Contact Info" true "Stay Visible" true
实际上有11 个参数,而不是我期望的9 个。
将“联系信息”和“保持可见”仅作为一个参数传递的诀窍是什么?
你是直接从命令行运行它吗?如果是这样,我希望它可以正常工作。(顺便说一下,我假设您正在使用 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 没有区别。
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]);
}
}
}
你是如何执行你的应用程序的?
如果您从另一个应用程序执行它,您可能忘记正确格式化参数字符串:
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