このページは役に立ちましたか。
このページのコンテンツについての ご意見をお待ちしております
その他にご意見はありますか。
残り 1500 文字
エクスポート (0) 印刷
すべて展開
展開 最小化
この記事は機械翻訳されたものです。 記事の文章にポインターを重ねると、原文のテキストが表示されます。 詳細情報
訳文
原文

EventHandler<TEventArgs> デリゲート

イベントがデータを提供するときにイベントを処理するメソッドを表します。

名前空間:  System
アセンブリ:  mscorlib (mscorlib.dll 内)

[SerializableAttribute]
public delegate void EventHandler<TEventArgs>(
	Object sender,
	TEventArgs e
)

型パラメーター

TEventArgs

イベントにより生成されるイベント データの型。

パラメーター

sender
型 : System.Object
イベントのソース。
e
型 : TEventArgs
イベント データを格納しているオブジェクト。

.NET Framework では、イベント モデルは基本的に、イベントをそのハンドラーに関連付けるイベント デリゲートを持っています。 イベントを発生させるには、次の 2 つの要素が必要です。

  • イベントへの応答を提供するメソッドを参照するデリゲート。

  • オプションでイベントのデータを提供する場合、イベント データを保持するクラス。

デリゲートは、シグネチャ (メソッドの戻り値の型とパラメーター リストの型) を定義する型です。 デリゲート型を使用すると、そのデリゲートと同じシグネチャを持つメソッドを参照できる変数を宣言できます。

イベント ハンドラーのデリゲートの標準的なシグネチャは、値を返さないメソッドを定義します。 このメソッドの最初のパラメーターは型 Object、イベントを発生させるインスタンスを示します。 2 番目のパラメーターは、その型 EventArgs から派生し、イベント データを保持します。 イベントがイベント データを生成しなければ、2 番目のパラメーターは EventArgs.Empty のフィールドの値です。 それ以外の場合は、2 番目のパラメーターは EventArgs から派生した型で、イベントのデータを保持するために必要なフィールドまたはプロパティを指定します。

EventHandler<TEventArgs> のデリゲートは、データを生成するイベントのイベント ハンドラー メソッドを表すデリゲート定義済みです。 EventHandler<TEventArgs> を使用する利点は、イベントによってイベント データが生成される場合に、独自のカスタム デリゲートをコード化する必要がないことです。 ジェネリック パラメーターとしてイベント データ オブジェクトの型が表示されます。

イベントとイベント処理メソッドを関連付けるには、デリゲートのインスタンスをイベントに追加します。 デリゲートを削除しない限り、そのイベントが発生すると常にイベント ハンドラーが呼び出されます。

イベント ハンドラー デリゲートの詳細については、「イベントの処理と発生」を参照してください。

次の例では ThresholdReachedというイベントを示します。 イベントは EventHandler<TEventArgs> のデリゲートに関連付けられます。


using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Counter c = new Counter(new Random().Next(10));
            c.ThresholdReached += c_ThresholdReached;

            Console.WriteLine("press 'a' key to increase total");
            while (Console.ReadKey(true).KeyChar == 'a')
            {
                Console.WriteLine("adding one");
                c.Add(1);
            }
        }

        static void c_ThresholdReached(object sender, ThresholdReachedEventArgs e)
        {
            Console.WriteLine("The threshold of {0} was reached at {1}.", e.Threshold,  e.TimeReached);
            Environment.Exit(0);
        }
    }

    class Counter
    {
        private int threshold;
        private int total;

        public Counter(int passedThreshold)
        {
            threshold = passedThreshold;
        }

        public void Add(int x)
        {
            total += x;
            if (total >= threshold)
            {
                ThresholdReachedEventArgs args = new ThresholdReachedEventArgs();
                args.Threshold = threshold;
                args.TimeReached = DateTime.Now;
                OnThresholdReached(args);
            }
        }

        protected virtual void OnThresholdReached(ThresholdReachedEventArgs e)
        {
            EventHandler<ThresholdReachedEventArgs> handler = ThresholdReached;
            if (handler != null)
            {
                handler(this, e);
            }
        }

        public event EventHandler<ThresholdReachedEventArgs> ThresholdReached;
    }

    public class ThresholdReachedEventArgs : EventArgs
    {
        public int Threshold { get; set; }
        public DateTime TimeReached { get; set; }
    }
}


.NET Framework

サポート対象 : 4.5.2、4.5.1、4.5、4、3.5、3.0、2.0

.NET Framework Client Profile

サポート対象 : 4、3.5 SP1

汎用性のあるクラス ライブラリ

サポート対象 : 汎用性のあるクラス ライブラリ

Windows ストア アプリ用 .NET

サポート対象 : Windows 8

Windows Phone アプリ用 .NET

サポート対象 : Windows Phone 8、Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (サーバー コア ロールはサポート対象外), Windows Server 2008 R2 (SP1 以降でサーバー コア ロールをサポート。Itanium はサポート対象外)

.NET Framework では、各プラットフォームのすべてのバージョンはサポートしていません。サポートされているバージョンについては、「.NET Framework システム要件」を参照してください。

コミュニティの追加

追加
表示:
© 2015 Microsoft