none
カスタムコントロールでのイベント処理(コーディングの仕方) RRS feed

  • 質問

  • カスタムコントロールでのイベント処理(コーディングの仕方)の扱い方についてなのですが、

     

    TextBoxを継承したカスタムコントロールで、Enterイベント時にカスタムコントロールによる

    処理がある、カスタムコントロールがあるとします。

     

    今までは、Enterイベントのハンドラを登録し、ハンドラ内に必要なコーディングをしていた

    のですが、

     

        public partial class CustomControl : TextBox
        {
            public CustomControl()
            {
                this.Enter += new System.EventHandler(this.CustomControl_Enter);
            }

            private void CustomControl_Enter(object sender, EventArgs e)
            {
                // CustomControlによる処理
            }
        }

    このカスタムコントロールをFormに貼り付け、その貼り付けたカスタムコントロールでも

    Enterイベントで処理をする場合、

     

        public partial class Form1 : Form
        {
            public Form1()
            {
                CustomControl this.customControl1 = new CustomControl();
                this.customControl1.Enter += new System.EventHandler(this.customControl1_Enter);
            }

            private void customControl1_Enter(object sender, EventArgs e)
            {
                // Formに貼り付けたCustomControlでの処理
            }
        }

    「CustomControlによる処理」、「Formに貼り付けたCustomControlでの処理」の実行される順番が

    どうでも良い時は、別段これでもよかったのですが、この処理される順番を制御しようとすると、

     

        public partial class CustomControl : TextBox
        {
            protected override void OnEnter(EventArgs e)
            {
                // CustomControlによる処理(先に処理)
                base.OnEnter(e);
                // CustomControlによる処理(後で処理)
            }
        }

    の様に、カスタムコントロールのOnEnterメソッドをOverrideする事になるかと思うのですが。

     

    それで、お聞きしたいのは、カスタムコントロール内で、イベントによる処理をコーディングする場合、

    イベントハンドラを登録するのではなく、初めから、OnXXX(今回の例では「OnEnter」)をOverrideして

    そこにコーディングするのが本来なのでしょうか?

     

    毎度、妙な質問ばかりですが、皆様のご意見お聞かせ願えませんでしょうか。

    宜しくお願い致します。

     

    2008年2月26日 4:04

回答

  • ぶるーのさん、こんにちは。

     

    ぶるーのさんが仰るとおり、OnEnter メソッドで処理するのが一般的です。
    私は順序が大切かそうでないかに関わらず、OnEnter メソッドに書くようにしています。

    2008年2月26日 4:40

すべての返信

  • ぶるーのさん、こんにちは。

     

    ぶるーのさんが仰るとおり、OnEnter メソッドで処理するのが一般的です。
    私は順序が大切かそうでないかに関わらず、OnEnter メソッドに書くようにしています。

    2008年2月26日 4:40
  • じゃんぬねっとさん、回答ありがとうございます。

     

    > OnEnter メソッドで処理するのが一般的です。

    大変、参考になりました。

     

    ありがとうございました。

     

    2008年2月27日 1:32