将命令行参数传递给按钮文本

Passing Command Line Argument to Button Text

我创建了一个简单的应用程序来通知用户正在发生的事情。它由一个按钮组成,当命令行传递给它时,它将显示为按钮的文本 属性。我想要完成的是,如果没有指定命令行参数,它将显示一条默认消息。我是 C# 的新手,所以请保持温柔...这是我目前所掌握的。

private void Form1_Load(object sender, EventArgs e)
    {

        string[] passedinargs = Environment.GetCommandLineArgs();

        if (passedinargs == null)
        {
            btnNotify.Text = "Please Start from Command Line";
        }
        else
        {
            btnNotify.Text = passedinargs[1];
        }

当运行时,给出了这个Execption:

An unhandled exception of type 'System.IndexOutOfRangeException' occurred in Notify.exe

突出显示 btnNotify.Text = passedinargs[1];

有什么建议吗?

What I want to accomplish is that if no command line arguments are specified, it will display a default message.

这表明您应该使用 Length 属性 检查参数的长度。所以像:

private void Form1_Load(object sender, EventArgs e)
{

    string[] args = Environment.GetCommandLineArgs();

    btnNotify.Text = args.Length < 2
        ? "Please provide an argument on the command line"
        : args[1]; // First command-line argument.
}

我很确定 Environment.GetCommandLineArgs() 永远不会 return 为空。如果发现确实如此,则可以在条件中使用 args == null || args.Length < 2

passedinargs 是一个数组,可能包含 1 个或多个元素。 第一个元素(即 passedinargs[0])始终是可执行文件名,其余(0 个或多个)是剩余的命令行争论。 如果你想使用 passedinargs[1] (这是可执行文件名后的第一个命令行参数),你需要验证它通过检查 passedinargs.Length.

存在

所以,我的建议是修改你的条件和查询:

if (passedinargs == null || passedinargs.Length < 2)
{
    btnNotify.Text = "Please Start from Command Line";
} 
...