プロプログラマ

プログラマーを職業としてます。 Flex,Air,C#,Oracle,HTML+JSの言語ノウハウを中心に情報発信していきます

[C#] 子フォームのイベントを親フォームでキャッチして処理する

親フォームから開いたダイアログで、なにか値が変わった場合に、親フォームへイベントとして通知するには、子フォーム側でイベントを定義します。

◆子フォーム側

発生させるイベントを定義する
CategoryやDescriptionを定義しておくと利用者側に親切。

        public delegate void RefreshEventHandler( object sender, EventArgs e);
        [Category("動作")]
        [Description("情報を更新するときに発生するイベント。")]
        public event RefreshEventHandler RefreshEvent;

任意の場所でイベントを発生させる

         private void btnRefresh_Click( object sender, EventArgs e)
        {
            this.RefreshEvent(this, new EventArgs ());
        }

◆親フォーム側

子フォームを生成する際に、イベント処理を定義する。
この例では無名delegateで簡易的に書いていますが。処理内容が複雑であれば、関数を外で定義した方がいいです。
子フォームでイベントが発生した時に、この処理が実行されます。

             FrmTest form = new FrmTest();
            form.RefreshEvent += delegate (object sender, EventArgs e) { Console.WriteLine("test"); };
            form.ShowDialog();

あまり複雑にすると処理の流れが置いづらくなるので、程々にはしておきたいですが、いちいち子フォームを閉じなくてもいろいろと処理ができるので、使いこなすと便利です。

 

== ランキングに参加しています。ぜひクリックお願いします ==

プログラム ブログランキングへ
にほんブログ村 IT技術ブログへ
にほんブログ村

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください