EventArgs クラス
EventArgs は、イベント データが格納されているクラスの基本クラスです。
この型のすべてのメンバの一覧については、EventArgs メンバ を参照してください。
System.Object
System.EventArgs
派生クラス
<Serializable>
Public Class EventArgs
[C#]
[Serializable]
public class EventArgs
[C++]
[Serializable]
public __gc class EventArgs
[JScript]
public
Serializable
class EventArgs
スレッドセーフ
この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。
解説
このクラスにはイベント データは格納されません。このクラスは、イベントの発生時にステータス情報をイベント ハンドラに渡さないイベントによって使用されます。イベント ハンドラがステータス情報を必要とする場合、アプリケーションは、そのデータを保持するために、このクラスからクラスを派生させる必要があります。
たとえば、 System.AssemblyLoadEventArgs クラスは、アセンブリ読み込みイベントのデータを保持するために使用され、読み込まれたアセンブリを記述する System.Reflection.Assembly を格納します。
イベントの詳細については、「 イベントのチュートリアル 」および EventHandler のトピックを参照してください。
使用例
[Visual Basic, C#, C++] EventArgs の使用方法については、次のコード例を参照してください。
[Visual Basic, C#, C++] この例では、FireEventArgs が EventArgs から派生したイベント引数の集合になっています。ActivateFireAlarm を呼び出してイベントが発生すると、FireEventHandler に渡されます。
Imports System
_
' FireEventArgs: a custom event inherited from EventArgs.
Public Class FireEventArgs
Inherits EventArgs
Public Sub New(room As String, ferocity As Integer)
Me.room = room
Me.ferocity = ferocity
End Sub 'New
' The fire event will have two pieces of information--
' 1) Where the fire is, and 2) how "ferocious" it is.
Public room As String
Public ferocity As Integer
End Class 'FireEventArgs
_
'end of class FireEventArgs
Public Class FireAlarm
' Events are handled with delegates, so we must establish a FireEventHandler
' as a delegate:
Delegate Sub FireEventHandler(sender As Object, fe As FireEventArgs)
' Now, create a public event "FireEvent" whose type is our FireEventHandler delegate.
Public Event FireEvent As FireEventHandler
' This will be the starting point of our event-- it will create FireEventArgs,
' and then raise the event, passing FireEventArgs.
Public Sub ActivateFireAlarm(room As String, ferocity As Integer)
Dim fireArgs As New FireEventArgs(room, ferocity)
' Now, raise the event by invoking the delegate. Pass in
' the object that initated the event (Me) as well as FireEventArgs.
' The call must match the signature of FireEventHandler.
RaiseEvent FireEvent(Me, fireArgs)
End Sub 'ActivateFireAlarm
End Class 'FireAlarm
' The following event will be the EventHandler.
Class FireHandlerClass
' Create a FireAlarm to handle and raise the fire events.
Public Sub New(fireAlarm As FireAlarm)
' Add a delegate containing the ExtinguishFire function to the class'
' event so that when FireAlarm is raised, it will subsequently execute
' ExtinguishFire.
AddHandler fireAlarm.FireEvent, AddressOf ExtinguishFire
End Sub 'New
' This is the function to be executed when a fire event is raised.
Sub ExtinguishFire(sender As Object, fe As FireEventArgs)
Console.WriteLine()
Console.WriteLine("The ExtinguishFire function was called by {0}.", sender.ToString())
' Now, act in response to the event.
If fe.ferocity < 2 Then
Console.WriteLine("This fire in the {0} is no problem. I'm going to pour some water on it.", fe.room)
Else
If fe.ferocity < 5 Then
Console.WriteLine("Using Fire Extinguisher to put out the fire in the {0}.", fe.room)
Else
Console.WriteLine("The fire in the {0} is out of control. I'm calling the fire department.", fe.room)
End If
End If 'end of class FireHandlerClass
End Sub 'ExtinguishFire
End Class 'FireHandlerClass
Public Class FireEventTest
Public Shared Sub Main()
' Create an instance of the class that will be raising the event.
Dim myFireAlarm As New FireAlarm()
' Create an instance of the class that will be handling the event. Note that
' it receives the class that will fire the event as a parameter.
Dim myFireHandler As New FireHandlerClass(myFireAlarm)
' Now, use the FireAlarm class to raise a few events.
myFireAlarm.ActivateFireAlarm("Kitchen", 3)
myFireAlarm.ActivateFireAlarm("Study", 1)
myFireAlarm.ActivateFireAlarm("Porch", 5)
Return
End Sub 'Main 'end of main
End Class 'FireEventTest ' end of FireEventTest
[C#]
using System;
// FireEventArgs: a custom event inherited from EventArgs.
public class FireEventArgs: EventArgs {
public FireEventArgs(string room, int ferocity) {
this.room = room;
this.ferocity = ferocity;
}
// The fire event will have two pieces of information--
// 1) Where the fire is, and 2) how "ferocious" it is.
public string room;
public int ferocity;
} //end of class FireEventArgs
// Class with a function that creates the eventargs and initiates the event
public class FireAlarm {
// Events are handled with delegates, so we must establish a FireEventHandler
// as a delegate:
public delegate void FireEventHandler(object sender, FireEventArgs fe);
// Now, create a public event "FireEvent" whose type is our FireEventHandler delegate.
public event FireEventHandler FireEvent;
// This will be the starting point of our event-- it will create FireEventArgs,
// and then raise the event, passing FireEventArgs.
public void ActivateFireAlarm(string room, int ferocity) {
FireEventArgs fireArgs = new FireEventArgs(room, ferocity);
// Now, raise the event by invoking the delegate. Pass in
// the object that initated the event (this) as well as FireEventArgs.
// The call must match the signature of FireEventHandler.
FireEvent(this, fireArgs);
}
} // end of class FireAlarm
// Class which handles the event
class FireHandlerClass {
// Create a FireAlarm to handle and raise the fire events.
public FireHandlerClass(FireAlarm fireAlarm) {
// Add a delegate containing the ExtinguishFire function to the class'
// event so that when FireAlarm is raised, it will subsequently execute
// ExtinguishFire.
fireAlarm.FireEvent += new FireAlarm.FireEventHandler(ExtinguishFire);
}
// This is the function to be executed when a fire event is raised.
void ExtinguishFire(object sender, FireEventArgs fe) {
Console.WriteLine("\nThe ExtinguishFire function was called by {0}.", sender.ToString());
// Now, act in response to the event.
if (fe.ferocity < 2)
Console.WriteLine("This fire in the {0} is no problem. I'm going to pour some water on it.", fe.room);
else if (fe.ferocity < 5)
Console.WriteLine("I'm using FireExtinguisher to put out the fire in the {0}.", fe.room);
else
Console.WriteLine("The fire in the {0} is out of control. I'm calling the fire department!", fe.room);
}
} //end of class FireHandlerClass
public class FireEventTest {
public static void Main () {
// Create an instance of the class that will be firing an event.
FireAlarm myFireAlarm = new FireAlarm();
// Create an instance of the class that will be handling the event. Note that
// it receives the class that will fire the event as a parameter.
FireHandlerClass myFireHandler = new FireHandlerClass(myFireAlarm);
//use our class to raise a few events and watch them get handled
myFireAlarm.ActivateFireAlarm("Kitchen", 3);
myFireAlarm.ActivateFireAlarm("Study", 1);
myFireAlarm.ActivateFireAlarm("Porch", 5);
return;
} //end of main
} // end of FireEventTest
[C++]
#using <mscorlib.dll>
using namespace System;
// FireEventArgs: a custom event inherited from EventArgs.
public __gc class FireEventArgs: public EventArgs {
public:
FireEventArgs(String* room, int ferocity) {
this->room = room;
this->ferocity = ferocity;
}
// The fire event will have two pieces of information--
// 1) Where the fire is, and 2) how "ferocious" it is.
String* room;
int ferocity;
}; //end of class FireEventArgs
// Class with a function that creates the eventargs and initiates the event
public __gc class FireAlarm {
// Events are handled with delegates, so we must establish a FireEventHandler
// as a delegate:
public:
__delegate void FireEventHandler(Object* sender, FireEventArgs* fe);
// Now, create a public event "FireEvent" whose type is our FireEventHandler delegate.
__event FireEventHandler* FireEvent;
// This will be the starting point of our event-- it will create FireEventArgs,
// and then raise the event, passing FireEventArgs.
void ActivateFireAlarm(String* room, int ferocity) {
FireEventArgs* fireArgs = new FireEventArgs(room, ferocity);
// Now, raise the event by invoking the delegate. Pass in
// the object that initated the event (this) as well as FireEventArgs.
// The call must match the signature of FireEventHandler.
FireEvent(this, fireArgs);
}
}; // end of class FireAlarm
// Class which handles the event
__gc class FireHandlerClass {
// Create a FireAlarm to handle and raise the fire events.
public:
FireHandlerClass(FireAlarm* fireAlarm) {
// Add a delegate containing the ExtinguishFire function to the class'
// event so that when FireAlarm is raised, it will subsequently execute
// ExtinguishFire.
fireAlarm->FireEvent += new FireAlarm::FireEventHandler(this, &FireHandlerClass::ExtinguishFire);
}
// This is the function to be executed when a fire event is raised.
void ExtinguishFire(Object* sender, FireEventArgs* fe) {
Console::WriteLine(S"\nThe ExtinguishFire function was called by {0}.", sender);
// Now, act in response to the event.
if (fe->ferocity < 2)
Console::WriteLine(
S"This fire in the {0} is no problem. I'm going to pour some water on it.",
fe->room);
else if (fe->ferocity < 5)
Console::WriteLine(
S"I'm using FireExtinguisher to put out the fire in the {0}.",
fe->room);
else
Console::WriteLine(
S"The fire in the {0} is out of control. I'm calling the fire department!",
fe->room);
}
}; //end of class FireHandlerClass
int main () {
// Create an instance of the class that will be firing an event.
FireAlarm* myFireAlarm = new FireAlarm();
// Create an instance of the class that will be handling the event. Note that
// it receives the class that will fire the event as a parameter.
FireHandlerClass* myFireHandler = new FireHandlerClass(myFireAlarm);
//use our class to raise a few events and watch them get handled
myFireAlarm->ActivateFireAlarm(S"Kitchen", 3);
myFireAlarm->ActivateFireAlarm(S"Study", 1);
myFireAlarm->ActivateFireAlarm(S"Porch", 5);
} //end of main
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
名前空間: System
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET
アセンブリ: Mscorlib (Mscorlib.dll 内)