如何为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

参考文献

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

时间: 2024-08-06 22:36:13

如何为Windows Forms应用程序添加启动参数(Start-Up Parameters)的相关文章

给程序添加启动画面

如果程序在装载时需要进行较长时间的处理,最好使用启动画面,一方面美化程序,一方面可以不使用户面对着一片空白的程序界面. 我手头上一个小项目主界面启动时需要检查用户文件及运行环境是否有效,需要一段时间处理,因此想到要添加一个启动画面,在网上搜了一阵,发现下面两个方案: 1.用C#给程序加启动画面并只允许一个应用程序实例运行 http://www.zahui.com/html/14/36790.htm 2.HOW TO:溅射屏幕(Splash Screen),也叫程序启动画面的制作(.NET2003

IOS编程教程(八):在你的应用程序添加启动画面

IOS编程教程(八):在你的应用程序添加启动画面 虽然你可能认为你需要编写闪屏的代码,苹果已经可以非常轻松地把它做在Xcode中.不需要任何编码.你只需要做的是设置一些配置. 什么是闪屏 对于那些新学代码的人,可能没有听说过“闪屏”把,让我先作一个简单的解释.闪屏是常见于iOS应用程序,以及其他桌面应用程序.这是你启动一个应用程序时,你看到的第一个画面.通常情况下,初始屏幕是一个覆盖整个屏幕的图像,消失后加载主屏幕.下图显示了几种闪屏: 简单闪屏(开始页面) 闪屏的主要目的是为了让用户知道你的程

在你的应用程序添加启动画面

虽然你可能认为你需要编写闪屏的代码,苹果已经可以非常轻松地把它做在Xcode中.不需要任何编码.你只需要做的是设置一些配置. 什么是闪屏 对于那些新学代码的人,可能没有听说过“闪屏”把,让我先作一个简单的解释.闪屏是常见于iOS应用程序,以及其他桌面应用程序.这是你启动一个应用程序时,你看到的第一个画面.通常情况下,初始屏幕是一个覆盖整个屏幕的图像,消失后加载主屏幕.下图显示了几种闪屏: 简单闪屏(开始页面) 闪屏的主要目的是为了让用户知道你的程序在加载,并给用户提供一个介绍性屏幕,显示你的品牌

在您的应用程序添加启动动画

这是弥补2014.11.30 虽然你可能认为你需要编写闪屏的代码,苹果已经可以非常轻松地把它做在Xcode中.不需要任何编码.你只需要做的是设置一些配置. 什么是闪屏 对于那些新学代码的人,可能没有听说过“闪屏”把,让我先作一个简单的解释.闪屏是常见于iOS应用程序,以及其他桌面应用程序.这是你启动一个应用程序时,你看到的第一个画面.通常情况下,初始屏幕是一个覆盖整个屏幕的图像,消失后加载主屏幕.下图显示了几种闪屏: 简单闪屏(开始页面) 闪屏的主要目的是为了让用户知道你的程序在加载,并给用户提

体验Visual Studio 2015 Windows Forms应用程序开发与维护

昨天到半夜还没有等到Visual Studio 2015的下载地址,实在熬不住就先休息了.北美地区的时区比北京时间要晚一些,今天早上到公司就看到Visual Studio 2015的下载地址,迅速的将Visual Studio 2015下载到电脑中体验一把. 作为老程序员,不关心ASP.NET 5的跨平台,这6年多时间一直坚守在Windows Forms平台下,不离不弃.Windows Forms很早停止更新,我认为这是好事.当初公司尝试选ORM开发框架时,曾考虑过Entity Framewor

Windows任务计划程序起始于参数自动修改

Windows任务计划程序建立后,手工运行可以成功,但计划任务自动运行却不能成功,搜索网络,原来是起始于参数没有配置,这个参数的英文名字是start-in.它保证任务计划程序的WorkingDirectory就是你所设置的路径,可惜的是这个参数在win7或者win2008上只能手动设置,那如何才能使用命令自动进行修改呢? 试过网友的很多方法,目前总结出两种可行的方法来: 1 针对Windows2012,使用powershell进行参数设置 参考: specifying “start-in” di

启动程序添加启动脚本

当编译好程序后,就需要启动测试程序,为了方便,我们一般使用脚本来拉起启动程序. 写个测试程序testMain, 写个拉起脚本run.sh #!/bin/sh #Check program is running count=`ps -ef | grep './bin/testMain' | grep -v grep | wc -l` #开启CORE开关 ulimit -c unlimited #判读程序是否已经拉起if [ $count -gt 0 ];then echo "testMain se

C#控制台基础 VS2017中为控制台程序设置启动参数(string[] args)

os :windows7_x64 ide:vs2017 代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApp1 { class Program { static void Main(string[] args) { foreach (var str in args) {

System.Windows.Forms.Control : Component, IOleControl, IOleObject, IOleInPlaceObject, IOleInPlaceActiveObject....

#region 程序集 System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 // C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Windows.Forms.dll #endregion using System.Collections; using System.ComponentModel; using Syst