• 如何为Windows Forms应用程序添加启动参数(Start-Up Parameters)


    很多场合下,我们需要通过命令行或者快捷方式在Windows Forms程序启动时向其传递参数。 这些参数可能是用来加载某一个文档,或者是应用程序的初始化配置文件。 特别是对那些需要高度自定义配置的大程序,经常需要调整运行参数来帮助使用者获得不同的运行结果。

    通常,我们可以通过以下两种方式来实现这个需求:

    • 重载入口点函数(Main)
    • 利用Environment类

    重载入口点函数(Main)

    我们在Visual Studio中创建Windows Forms程序时, VS会自动帮我们创建一个默认的入口点方法——Main。

    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());
    }
    

    这个入口点函数基本上适用所有程序,但如果想要接收命令行参数,则必须用一个带参数的Main方法来替换它。我们可以简单的向Main方法添加一个string数组参数, 比如:

    [STAThread]
    static void Main(string[] args)
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Application.Run(new Form1());
    }
    

    现在,我们就可以通过这个string数组(args)的值来获取程序启动时传递进来的参数信息。 如果没有传递任何参数,则这个数组为空。否则,每一个参数对应数组中的一个元素,这些参数用空格符来分隔。

    利用Environment类

    第二种获取应用程序启动参数的方式就是使用Environment类。 我们可以在System命名空间下找到Environment类,类中包含一个叫GetCommandLineArgs()的方法。 此方法会返回一个string数组,而数组的第一个值是程序的文件名(这也是两种方法所获取的参数的区别)。 如果可用,则其他元素就是通过命令行传递过来的参数。

    注: 命令行可以通过快捷方式来配置,比如:

    示例程序

    为了分别演示利用这两种方法来向向Windows Forms程序传递启动参数,我通过一个简单的程序来说明。

    • 创建一个Windows Form Application。
    • 新建两个Form,分别向其中添加一个RichTextBox控件,然后将RichTextBox控件的Dock属性设置为DockStyle.Fill。
    • 修改Program.cs中的入口点函数,如下:
      [STAThread]
      static void Main(string[] args)
      {
          Application.EnableVisualStyles();
          Application.SetCompatibleTextRenderingDefault(false);
      
          Form form;
          
      // 如果第一个参数为Form1则程序会打开Form1窗体,否则则打开Form2窗体。 if (args != null && args.Length > 0 && args[0] == "Form1") { form = new Form1(); ((Form1)form).CommandArguments = args; } else { form = new Form2(); ((Form2)form).CommandArguments = System.Environment.GetCommandLineArgs(); } Application.Run(form); }  
    • 然后分别在两个Form加载时,读取传递的参数,然后显示在RichTextBox中。下面是Form1的代码:
      public partial class Form1 : Form
      {
          public string[] CommandArguments { get; set; }
      
          public Form1()
          {
              InitializeComponent();
          }
      
          private void Form1_Load(object sender, EventArgs e)
          {
              if (CommandArguments != null)
              {
                  foreach (var item in CommandArguments)
                  {
                      richTextBox1.AppendText(item);
                      richTextBox1.AppendText(Environment.NewLine);
                  }
              }
          }
      }
      
    • 有两种方法设置参数,一是通过快捷方式;另一个是通过命令行来执行exe文件时传递。两种方法得到的结果是一样的,如下:
    • 代码下载: http://pan.baidu.com/s/1i3xb74T

    参考文献

  • 相关阅读:
    nginx平滑升级及回滚
    redis源码安装
    memcached安装
    Harbor源码部署
    Maven源码部署
    tomcat单机多实例(未完待续)
    部署tomcat
    nginx编译参数详解
    CentOS7 安装pip/pip3
    nginx 部署配置
  • 原文地址:https://www.cnblogs.com/EasonWu/p/windows-forms-apps-startup-parameters.html
Copyright © 2020-2023  润新知