EventHandlerとは? わかりやすく解説

EventHandler ジェネリック デリゲート

メモ : このデリゲートは、.NET Framework version 2.0新しく追加されたものです。

イベント処理するメソッド表しますジェネリック型引数は、イベントによって生成されるイベント データの型を指定します

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

<SerializableAttribute> _
Public Delegate Sub EventHandler(Of
 TEventArgs As EventArgs) ( _
    sender As Object, _
    e As TEventArgs _
)
Dim instance As New EventHandler(Of
 TEventArgs)(AddressOf HandlerMethod)
[SerializableAttribute] 
public delegate void EventHandler<TEventArgs>
 (
    Object sender,
    TEventArgs e
) where TEventArgs : EventArgs
[SerializableAttribute] 
generic<typename TEventArgs> where TEventArgs : EventArgs
public delegate void EventHandler (
    Object^ sender, 
    TEventArgs e
)
J# では、ジェネリックな型およびメソッド使用できますが、新規に宣言することはできません。
JScript では、ジェネリックな型およびメソッド使用できません。

パラメータ

sender

イベントソース

e

イベント データ格納している EventArgs。

解説解説

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

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

イベント ハンドラ デリゲート標準シグネチャは、値を返さないメソッド定義します。このメソッド最初パラメータObject 型で、イベント発生させるインスタンス参照します。2 つ目のパラメータは、EventArgs 型から派生しイベント データ保持しますイベントによってイベント データ生成されない場合、この 2 つ目のパラメータは、EventArgs単なるインスタンスです。それ以外場合には、2 つ目のパラメータEventArgs から派生したカスタム型であり、イベント データ保持する必要のあるフィールドまたはプロパティ提供します

EventHandler は、イベントによってイベント データ生成されるかどうかには関係なく、そのイベントイベント ハンドラ メソッドを表す定義済みデリゲートです。イベントによってイベント データ生成されない場合は、ジェネリック型パラメータ代わりに EventArgs使用しますそれ以外場合は、独自のカスタム イベント データ型を用意しジェネリック型パラメータ代わりにそのデータ型使用します

EventHandler使用する利点は、イベントによってイベント データ生成される場合に、独自のカスタム デリゲートコード化する必要がないことです。また、.NET Framework では、ジェネリック型パラメータ代わりに使用するイベント データ型には関係なく、EventHandlerサポートするために必要な実装1 つだけです。

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

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

使用例使用例

イベント データと、そのイベント データ使用する標準EventHandler デリゲート宣言するコード例次に示します。この例では、イベントどのように発生するかも示してます。

' This example demonstrates the EventHandler(Of T) delegate.
Imports System
Imports System.Collections.Generic

'---------------------------------------------------------
Public Class MyEventArgs
   Inherits EventArgs
   Private msg As String
   
   Public Sub New(messageData
 As String)
      msg = messageData
   End Sub 'New
   
   Public Property Message() As
 String
      Get
         Return msg
      End Get
      Set
         msg = value
      End Set
   End Property
End Class 'MyEventArgs 
'---------------------------------------------------------
Public Class HasEvent
   ' Declare an event of delegate type EventHandler of 
   ' MyEventArgs.
   Public Event SampleEvent As
 EventHandler(Of MyEventArgs)
   
   Public Sub DemoEvent(val As
 String)
      RaiseEvent SampleEvent(Me, New
 MyEventArgs(val))
   End Sub 'DemoEvent
End Class 'HasEvent 
'---------------------------------------------------------
Public Class Sample
   Public Shared Sub Main()
      Dim he As New HasEvent()
      AddHandler he.SampleEvent, AddressOf
 SampleEventHandler
      he.DemoEvent("Hey there, Bruce!")
      he.DemoEvent("How are you today?")
      he.DemoEvent("I'm pretty good.")
      he.DemoEvent("Thanks for asking!")
   End Sub 'Main

   Private Shared Sub SampleEventHandler(src
 As Object, _
                                         mea As MyEventArgs)
      Console.WriteLine(mea.Message)
   End Sub 'SampleEventHandler
End Class 'Sample
'---------------------------------------------------------
'
'This example produces the following results:
'
'Hey there, Bruce!
'How are you today?
'I'm pretty good.
'Thanks for asking!
'
// This example demonstrates the EventHandler<T> delegate.

using System;
using System.Collections.Generic;

//---------------------------------------------------------
public class MyEventArgs : EventArgs
{
    private string msg;

    public MyEventArgs( string messageData
 ) {
        msg = messageData;
    }
    public string Message { 
        get { return msg; } 
        set { msg = value; }
    }
}
//---------------------------------------------------------
public class HasEvent
{
// Declare an event of delegate type EventHandler of 
// MyEventArgs.

    public event EventHandler<MyEventArgs> SampleEvent;

    public void DemoEvent(string
 val)
    {
    // Copy to a temporary variable to be thread-safe.
        EventHandler<MyEventArgs> temp = SampleEvent;
        if (temp != null)
            temp(this, new MyEventArgs(val));
    }
}
//---------------------------------------------------------
public class Sample
{
    public static void Main()
    {
        HasEvent he = new HasEvent();
        he.SampleEvent += 
                   new EventHandler<MyEventArgs>(SampleEventHandler);
        he.DemoEvent("Hey there, Bruce!");
        he.DemoEvent("How are you today?");
        he.DemoEvent("I'm pretty good.");
        he.DemoEvent("Thanks for asking!");
    }
    private static void
 SampleEventHandler(object src, MyEventArgs mea)
    {
        Console.WriteLine(mea.Message);
    }
}
//---------------------------------------------------------
/*
This example produces the following results:

Hey there, Bruce!
How are you today?
I'm pretty good.
Thanks for asking!

*/
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

EventHandler デリゲート

イベント データ持たないイベント処理するメソッド表します

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

<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public Delegate Sub EventHandler
 ( _
    sender As Object, _
    e As EventArgs _
)
Dim instance As New EventHandler(AddressOf
 HandlerMethod)
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public delegate void EventHandler (
    Object sender,
    EventArgs e
)
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public delegate void EventHandler (
    Object^ sender, 
    EventArgs^ e
)
/** @delegate */
/** @attribute SerializableAttribute() */ 
/** @attribute ComVisibleAttribute(true) */ 
public delegate void EventHandler (
    Object sender, 
    EventArgs e
)
JScript では、デリゲート使用できますが、新規に宣言することはできません。

パラメータ

sender

イベントソース

e

イベント データ格納している EventArgs。

解説解説

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

デリゲートは、シグネチャ定義する型、つまり、メソッド戻り値の型およびパラメータ リストの型です。デリゲート型使用してデリゲートと同じシグネチャメソッド参照するための変数宣言できます

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

EventHandler は定義済みデリゲートであり、特に、データ生成しないイベントイベント ハンドラ メソッド表しますイベントデータ生成しない場合は、カスタム イベント データ型を提供して2 番目のパラメータの型をカスタム型とするデリゲート作成するか、ジェネリック デリゲート クラス EventHandler を使ってカスタム型をジェネリック型パラメータ置き換える必要があります

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

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

使用例使用例

イベント データ使用しないイベント ハンドラ デリゲート宣言するコード例次に示しますEventHandler クラスイベント デリゲートの型、senderイベント発生させるオブジェクトeデータ格納しないイベント データ オブジェクトです。この例のコードの 2 行目は、データ保持しないイベント用にクラス内のイベント メンバ定義します

Delegate Sub EventHandler(sender As
 Object, e As EventArgs)
   
Public Event NoDataEventHandler As
 EventHandler
public delegate void EventHandler(Object sender,
 EventArgs e);
public event EventHandler NoDataEventHandler;
public:
   delegate void EventHandler( Object^ sender, EventArgs^ e );

   event EventHandler^ NoDataEventHandler;
public delegate void EventHandler(Object sender,
 EventArgs e);

public EventHandler noDataEventHandler = null;

/** @event 
 */
public void add_NoDataEventHandler(EventHandler
 p)
{
    noDataEventHandler =(EventHandler)System.Delegate.
        Combine(noDataEventHandler, p);
}//add_NoDataEventHandler

/** @event 
 */
public void remove_NoDataEventHandler(EventHandler
 p)
{
    noDataEventHandler =(EventHandler)System.Delegate.
        Remove(noDataEventHandler, p);
}// remove_NoDataEventHandler

プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照


このページでは「.NET Framework クラス ライブラリ リファレンス」からEventHandlerを検索した結果を表示しています。
Weblioに収録されているすべての辞書からEventHandlerを検索する場合は、下記のリンクをクリックしてください。
 全ての辞書からEventHandler を検索

英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「EventHandler」の関連用語

EventHandlerのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



EventHandlerのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2025 Microsoft.All rights reserved.

©2025 GRAS Group, Inc.RSS