Wie kann ich mein eigenes Event in C # erstellen?
122
Hier ist ein Beispiel für das Erstellen und Verwenden eines Ereignisses mit C #
using System;
namespace Event_Example
{
//First we have to define a delegate that acts as a signature for the
//function that is ultimately called when the event is triggered.
//You will notice that the second parameter is of MyEventArgs type.
//This object will contain information about the triggered event.
public delegate void MyEventHandler(object source, MyEventArgs e);
//This is a class which describes the event to the class that recieves it.
//An EventArgs class must always derive from System.EventArgs.
public class MyEventArgs : EventArgs
{
private string EventInfo;
public MyEventArgs(string Text)
{
EventInfo = Text;
}
public string GetInfo()
{
return EventInfo;
}
}
//This next class is the one which contains an event and triggers it
//once an action is performed. For example, lets trigger this event
//once a variable is incremented over a particular value. Notice the
//event uses the MyEventHandler delegate to create a signature
//for the called function.
public class MyClass
{
public event MyEventHandler OnMaximum;
private int i;
private int Maximum = 10;
public int MyValue
{
get
{
return i;
}
set
{
if(value <= Maximum)
{
i = value;
}
else
{
//To make sure we only trigger the event if a handler is present
//we check the event to make sure it's not null.
if(OnMaximum != null)
{
OnMaximum(this, new MyEventArgs("You've entered " +
value.ToString() +
", but the maximum is " +
Maximum.ToString()));
}
}
}
}
}
class Program
{
//This is the actual method that will be assigned to the event handler
//within the above class. This is where we perform an action once the
//event has been triggered.
static void MaximumReached(object source, MyEventArgs e)
{
Console.WriteLine(e.GetInfo());
}
static void Main(string[] args)
{
//Now lets test the event contained in the above class.
MyClass MyObject = new MyClass();
MyObject.OnMaximum += new MyEventHandler(MaximumReached);
for(int x = 0; x <= 15; x++)
{
MyObject.MyValue = x;
}
Console.ReadLine();
}
}
}
event
Teil für die Klasse zu schreiben .Ich habe eine vollständige Diskussion über Ereignisse und Delegierte in meinem Veranstaltungsartikel . Für die einfachste Art von Ereignis können Sie einfach ein öffentliches Ereignis deklarieren, und der Compiler erstellt sowohl ein Ereignis als auch ein Feld, um die Abonnenten zu verfolgen:
Wenn Sie eine kompliziertere Abonnement- / Abmeldelogik benötigen, können Sie dies explizit tun:
quelle
Sie können ein Ereignis mit dem folgenden Code deklarieren:
Bei Bedarf kann ein benutzerdefinierter Delegattyp anstelle von EventHandler verwendet werden.
Detaillierte Informationen / Tutorials zur Verwendung von Ereignissen in .NET finden Sie im Artikel Events Tutorial (MSDN).
quelle
Dazu müssen wir die drei Komponenten kennen
firing the Event
responding to the Event
das Ereignis selbst
ein. Veranstaltung
b .EventArgs
c. EventArgs-Aufzählung
Jetzt können Sie ein Ereignis erstellen, das ausgelöst wird, wenn eine Funktion aufgerufen wird
Aber ich habe die Reihenfolge, um dieses Problem so zu lösen: Ich verwende die Klasse, bevor ich sie erstelle
der Ort, für den verantwortlich ist
responding to the Event
NetLog ist eine statische Klasse, die ich später erläutern werde
Der nächste Schritt ist
der Ort, für den verantwortlich ist
firing the Event
der dritte Schritt
Ich habe The Event in einer Klasse namens NetLog verzerrt
enthält diese Klasse jetzt
the Event
,EventArgs
undEventArgs Enums
undthe function
verantwortlich für die Veranstaltung zum BrennenEntschuldigung für diese lange Antwort
quelle