由於WPF把main()藏了起來,包裝起來,在編譯過程才會產生,所以原本透過main(string[] args)來取得參數的方法變得無法使用了(或說我不知道該怎麼用),怎麼辦呢?可以透過以下的變通方式來用,雖然麻煩點,但是知道方法之後,也沒有多難。
首先,要在App.xaml.cs動手腳,增加以下程式碼,就可以取得
// override 的目的是為了取得傳入的參數
protected override void OnStartup( StartupEventArgs e )
{
public static String Args0;
if ( e.Args != null && e.Args.Count( ) > 0 )
{
Args0 = e.Args[ 0 ].ToString( );
}
base.OnStartup( e );
}
然後在啟動的視窗(可以在App.xmal當中看到呼叫了哪個視窗,他就會是啟動視窗,比方如果是 StartupUri="WinProgress.xaml" 那WinProgress 就是啟動視窗 )
在該視窗程式碼(.cs)當中就可以用App.Args0取得傳入的參數了。
那參數如果有兩個呢?很簡單,就這樣子做:
// override 的目的是為了取得傳入的參數
protected override void OnStartup( StartupEventArgs e )
{
public static String Args0;
public static String Args1;
if ( e.Args != null && e.Args.Count( ) > 1 )
{
Args0 = e.Args[ 0 ].ToString( );
Args1 = e.Args[ 1 ].ToString( );
}
base.OnStartup( e );
}
反而比較要注意的是,如果你透過程式要呼叫上面那個程式,想把參數傳進去,要怎麼透過Process()來傳多個參數呢?,要用個小技巧,Process.Start( "Filename", "Arg1 Arg2" );在Start()這個函式的第二個參數,傳入的自串中間用空格隔開,就會變成兩個參數了XD
沒有留言:
張貼留言