*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*

<C#>
「コレクションにおけるイベントの取り扱い <移動と複写の両者に対応>」のコード No.3


*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*

.






元のページ


元ページ

「<C# > コレクションにおけるイベントの取り扱い <移動と複写の両者に対応>」
http://note.chiebukuro.yahoo.co.jp/detail/n231451

 

記述量上限の制限で、ページを分けて記述しています。





本ページの前のページ


「コレクションにおけるイベントの取り扱い <移動と複写の両者に対応>」

のコード No.2
http://note.chiebukuro.yahoo.co.jp/detail/n231549

 

記述量上限の制限で、ページを分けて記述しています。







はじめに


元ページの

「<C#> コレクションにおけるイベントの取り扱い <移動と複写の両者に対応>」

におけるコードをここに記述します。








拡張ピクチャボックスクラスのコード




 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


// コレクションにおけるイベントの取り扱い <移動と複写の両者に対応>
namespace CollectionEventSample3
{
    // ************************************
    // 拡張ピクチャボックス
    // 本クラスは、PictureBoxの派生クラスです。PictureBoxのコレクション
    // (配列、又はList)を作る際に、その要素の型として、本クラスを使い
    // ます。本クラスでのイベントプロシージャは、引数でインデックス(配
    // 列の添字)を渡しますので、イベントプロシージャ内で、どの要素(ピ
    // クチャボックス)からイベント発生したのか、その識別が行なえます。
    // ************************************
    public class PictBoxEx : System.Windows.Forms.PictureBox
    {

        // 要素インデックス
        //  --- 本クラスによるオブジェクトを複数生成した場合、その内の
        //      一要素を特定するためのインデックスです。例えば、本クラ
        //      スによる配列を作成した場合、配列要素の添字を本メンバー
        //      変数に格納します。
        public int ElementIndex;

 

        // ************************************
        // イベント発生関連の定義
        // ************************************


        //========================
        // マウスイベント関連で共通して使われるデリゲートの定義
        //========================


        // マウスボタンクリックメソッド用デリゲート
        // マウスボタン上昇メソッド用デリゲート
        // マウスポインター移動メソッド用デリゲート
        //  --- イベントプロシージャをどのような引数のメソッドにしたいのか、それを宣言
        // 第1引数: 本イベントプロシージャの呼び出し元のオブジェクト
        // 第2引数: イベント データを格納している MouseEventArgs型オブジェクト
        // 第3引数: 要素インデックス
        public delegate void MouseEventHandlerEx(
            object sender,
            System.Windows.Forms.MouseEventArgs pe,
            int Element_Index);


        //========================
        // マウスボタンクリックイベント発生の定義
        //========================


        // マウスボタンクリック用イベントの定義
        //  --- 宣言された物をイベントとして登録
        public event MouseEventHandlerEx MouseDownEx; // メッセージ伝達イベント

 


        //------------------------
        // マウスボタンクリックイベント発生メソッド
        //  --- マウスボタンをクリックする時の処理内容を定義したメソッド。
        // 第1引数: イベント データを格納している MouseEventArgs型オブジェクト
        // 第2引数: 要素インデックス
        public virtual void OnMouseDownEx(
            System.Windows.Forms.MouseEventArgs pe,
            int Element_Index)
        {
            if (MouseDownEx != null)
            {
                // クラスオブジェクト生成後に登録されたメソッド(イベントハンドラ)を実行
                MouseDownEx(this, pe, Element_Index);
            }
        }

 

        //==============
        // マウスボタンクリックイベント発生メソッド
        //  --- 親クラスでの該当メソッドのオーバーライド
        protected override void OnMouseDown(System.Windows.Forms.MouseEventArgs pe)
        {

            // 基本クラスのOnMouseDown()メソッドを呼び出して実行
            base.OnMouseDown(pe);


            // マウスボタンクリック時に起動させるメソッドを実行
            //  --- 拡張したマウスボタンクリックイベント(すなわち、本クラ
            //      スで定義したMouseDownExイベント)を、ここで発生させる。
            OnMouseDownEx(pe, ElementIndex);

        }

 

        //========================
        // マウスポインター移動イベント発生の定義
        //========================


        // マウスポインター移動用イベントの定義
        //  --- 宣言された物をイベントとして登録
        public event MouseEventHandlerEx MouseMoveEx; // メッセージ伝達イベント

 

        //------------------------
        // マウスポインター移動イベント発生メソッド
        //  --- マウスポインターを移動する時の処理内容を定義したメソッド。
        // 第1引数: イベント データを格納している MouseEventArgs型オブジェクト
        // 第2引数: 要素インデックス
        public virtual void OnMouseMoveEx(
            System.Windows.Forms.MouseEventArgs pe,
            int Element_Index)
        {
            if (MouseMoveEx != null)
            {
                // クラスオブジェクト生成後に登録されたメソッド(イベントハンドラ)を実行
                MouseMoveEx(this, pe, Element_Index);
            }
        }

 

        //==============
        // マウスポインター移動イベント発生メソッド
        //  --- 親クラスでの該当メソッドのオーバーライド
        // 第1引数: イベント データを格納している MouseEventArgs型オブジェクト
        protected override void OnMouseMove(System.Windows.Forms.MouseEventArgs pe)
        {

            // 基本クラスのOnMouseMove()メソッドを呼び出して実行
            base.OnMouseMove(pe);


            // マウスポインター移動時に起動させるメソッドを実行
            //  --- 拡張したマウスポインター移動イベント(すなわち、本クラ
            //      スで定義したMouseMoveExイベント)を、ここで発生させる。
            OnMouseMoveEx(pe, ElementIndex);

        }

 

 

 

        //========================
        // マウスボタン上昇イベント発生の定義
        //========================


        // マウスボタン上昇用イベントの定義
        //  --- 宣言された物をイベントとして登録
        public event MouseEventHandlerEx MouseUpEx; // メッセージ伝達イベント


        //------------------------
        // マウスボタン上昇イベント発生メソッド
        //  --- マウスボタンが離される時(上昇する時)の処理内容を定義したメソッド。
        // 第1引数: イベント データを格納している MouseEventArgs型オブジェクト
        // 第2引数: 要素インデックス
        public virtual void OnMouseUpEx(
            System.Windows.Forms.MouseEventArgs pe,
            int Element_Index)
        {
            if (MouseUpEx != null)
            {
                // クラスオブジェクト生成後に登録されたメソッド(イベントハンドラ)を実行
                MouseUpEx(this, pe, Element_Index);
            }
        }

 

        //==============
        // マウスボタン上昇イベント発生メソッド
        //  --- 親クラスでの該当メソッドのオーバーライド
        // 第1引数: イベント データを格納している MouseEventArgs型オブジェクト
        protected override void OnMouseUp(System.Windows.Forms.MouseEventArgs pe)
        {

            // 基本クラスのOnMouseUp()メソッドを呼び出して実行
            base.OnMouseUp(pe);


            // マウスボタン上昇時に起動させるメソッドを実行
            //  --- 拡張したマウスボタン上昇イベント(すなわち、本クラス
            //      で定義したMouseUpExイベント)を、ここで発生させる。
            OnMouseUpEx(pe, ElementIndex);

        }

 

 

    }
}

 





 

さいごに


本ページの内容説明については、元ページを参照して下さい。