#freeze
[[.NET]]

Formアプリでコマンドライン引数を使う事って、あまりないわよね?でも、たまに、ごくごくたまにこれが欲しい事があるのよね。

そんなわけで試してみたわ。

* 書き方 [#rdffe1df]

そもそもFormはプログラムのどこで作られるかというと、Program.cs上で定義されているの。したがって、Program.cs で引数を取り込んで、Formに受け渡してあげればいいわけね。

まず、Form側に受付用の変数を定義するわ。

         public string filename;
         public bool CommandLine; // コマンドライン引数の入力があったかを示すフラグ

publicなのがミソね。

そんで、これに Program.cs 側で定義してあげればいいのね。

        static void Main(string[] args)
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Form1 f1 = new Form1();
            if (args.Length > 0)
            {
                f1.filename = args[0];
                f1.CommandLine = true;
            }
            else
            {
                f1.filename = "";
                f1.CommandLine = false;
            }
            Application.Run(f1);
        }

オリジナルだとたぶん、 Application.Run(new Form()) とかになってると思うから、そこにちょっと手を加えて受け渡しを書いてあげればいいってわけ。

じゃあね。

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS