標籤:style blog http 使用 檔案 2014
很多場合下,我們需要通過命令列或者捷徑在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 Application Start-Up Parameters