很多场合下,我们需要通过命令行或者快捷方式在Windows Forms程序启动时向其传递参数。 这些参数可能是用来加载某一个文档,或者是应用程序的初始化配置文件。 特别是对那些需要高度自定义配置的大程序,经常需要调整运行参数来帮助使用者获得不同的运行结果。
通常,我们可以通过以下两种方式来实现这个需求:
我们在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类。 我们可以在System命名空间下找到Environment类,类中包含一个叫GetCommandLineArgs()的方法。 此方法会返回一个string数组,而数组的第一个值是程序的文件名(这也是两种方法所获取的参数的区别)。 如果可用,则其他元素就是通过命令行传递过来的参数。
注: 命令行可以通过快捷方式来配置,比如:
为了分别演示利用这两种方法来向向Windows Forms程序传递启动参数,我通过一个简单的程序来说明。
[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); }
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); } } } }
如何为Windows Forms应用程序添加启动参数(Start-Up Parameters),布布扣,bubuko.com
如何为Windows Forms应用程序添加启动参数(Start-Up Parameters)
原文地址:http://www.cnblogs.com/EasonWu/p/windows-forms-apps-startup-parameters.html