控制台程序,main中有参数,窗口程序,main函数没有参数,有什么好办法可以得到命令行参数吗?
另外请教个问题,控制台程序有没有办法使用类似于messagebox.show的方法,弹出一个提示?

解决方案 »

  1.   

    1. Winform程序可以通过 string[] args = Environment.GetCommandLineArgs(); 获得。
    2. Console程序可以用 Console.WriteLine() 输出提示。
       当然引用 System.Windows.Forms.dll 就可以使用MessageBox.Show,不过没这么用的。
      

  2.   

    fangxinggood你好,非常感谢,受益匪浅!
    还有个问题请教一下,命令行参数可以接受多少字符呢?不是在控制台输入,使用程序调用exe文件加命令行的方式。控制台是有输入限制的,程序调用是不是没有限制?应为string[] args,这个string是非常大的。
      

  3.   

    这个真没有试过,但是只要内存够大都可以收下。不过命令行都是为了方便调用而设定的,
    不应该传太复杂的参数。不过参数真的很多字符的话,应该考虑用别的方法传入。
    比如:App.config等配置文件的方法。
      

  4.   

    program.cs 里面也有 main 函数的,在里面加 string[] args 即可
      

  5.   

    给你个例子吧,正好写到了program.cs中
    static void Main(string[] args)
            { 
    //。
    Application.Run(
                    new Form1(args[0].Trim(), args[1].Trim(), args[2].Trim(), args[3].Trim(), args[4].Trim())
                    );
    }这样FORM就能拿到参数了,form1.cs中
    public Form1(string db, string logonID)
            {
                #region 获取参数            this.DB = db;
                this.LogonID = logonID;            #endregion            InitializeComponent();
    }
      

  6.   

    参考MSDN吧http://msdn.microsoft.com/zh-cn/library/system.environment.getcommandlineargs(v=VS.80).aspx返回包含当前进程的命令行参数的字符串数组返回值
    字符串数组,其中的每个元素都包含一个命令行参数。第一个元素是可执行文件名,后面的零个或多个元素包含其余的命令行参数。  备注
    --------------------------------------------------------------------------------数组中的第一个元素包含执行程序的文件名。如果该文件名不可用,则第一个元素等于 String.Empty。其他元素包含在命令行输入的任何附加标记。程序文件名可以(但不是必须)包含路径信息。除非在引号 (QUOTATION MARK, U+0022) 中出现空白,否则用空白(SPACE (U+0020) 或 CHARACTER TABULATION (U+0009))分隔命令行参数。引号中的空白被视为引用文本的一部分。分隔��不包括在命令行参数之中。引号后跟的反斜杠字符 (REVERSE SOLIDUS (U+005C)) 需要分情况解释。如果 2n 个反斜杠后跟引号,命令行参数则包含 n 个反斜杠。而且,如果其前面的文本为非引用文本,则开始引用其后的文本;如果其前面的文本为引用文本,则结束文本引用。如果 2n+1 个反斜杠后跟引号,命令行参数则包含 n 个反斜杠和一个原意引号。如果 n 个反斜杠后未跟引号,命令行参数则包含 n 个反斜杠。若要获取作为单个字符串的命令行,请使用 CommandLine 属性
      

  7.   

    谢谢大家。
    Environment.GetCommandLineArgs(); 获得的参数第一个是程序文件名。
    main(string[] args)获得的参数,不包含文件名,如果没有参数,args.length是0
    这是我测试的结果,main()函数的参数记得是包括文件名的,可能是我弄错了。