我正在尝试将命令行参数传递给我拥有的winform,但无论我指定什么作为参数,它都会一直返回winform文件名和路径。
private void Form1_Load(object sender, EventArgs e)
{
MessageBox.Show(Environment.GetCommandLineArgs()[0]);
}
即使在我输入C:\App\MyApp.exe
的cmd中,消息框也会显示C:\App\MyApp.exe param1
。
答案 0 :(得分:8)
你没有做错任何事。
命令行上的第一个参数始终是可执行文件名。
要获取传递给可执行文件的第一个参数,请获取下一个参数(假设存在一个参数):
Environment.GetCommandLineArgs()[1]
答案 1 :(得分:5)
第一个条目(索引0)始终是可执行文件的路径。您需要访问索引1.请改为尝试:
private void Form1_Load(object sender, EventArgs e)
{
var arguments = Environment.GetCommandLineArgs();
if (arguments.Length > 1) {
MessageBox.Show(arguments[1]);
}
}
答案 2 :(得分:2)
第一个命令行参数始终是程序的路径
Environment.GetCommandLineArgs()[1]
将为"param1"
。
答案 3 :(得分:2)
Environment.GetCommandLineArgs()[0]
返回可执行文件的路径。
Environment.GetCommandLineArgs()[1]
...
Environment.GetCommandLineArgs()[n]
将返回n
个连续参数。
Environment.GetCommandLineArgs()
返回一组参数。
答案 4 :(得分:1)
第一个参数将始终是可执行文件的名称。参数从1开始。 所以Environment.GetCommandLineArgs()[1]将给出第一个参数。
答案 5 :(得分:0)
或者,我最喜欢的......
foreach (var arg in Environment.GetCommandLineArgs().Skip(1))
{
// process each arg in turn.
}