Bagaimana saya bisa membuat acara saya sendiri di C #?
122
Berikut contoh membuat dan menggunakan acara dengan 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
bagian untuk kelas.Saya memiliki diskusi lengkap tentang acara dan delegasi di artikel acara saya . Untuk jenis acara yang paling sederhana, Anda cukup mendeklarasikan acara publik dan kompilator akan membuat acara dan bidang untuk melacak pelanggan:
Jika Anda memerlukan logika berlangganan / berhenti berlangganan yang lebih rumit, Anda dapat melakukannya secara eksplisit:
sumber
Anda dapat mendeklarasikan sebuah acara dengan kode berikut:
Jenis delegasi kustom, bukan EventHandler, dapat digunakan jika diperlukan.
Anda dapat menemukan informasi / tutorial rinci tentang penggunaan acara di .NET di artikel Tutorial Acara (MSDN).
sumber
untuk melakukannya kita harus mengetahui tiga komponen
firing the Event
responding to the Event
Acara itu sendiri
Sebuah. Peristiwa
b. EventArgs
c. Pencacahan EventArgs
sekarang mari kita buat Peristiwa yang diaktifkan saat fungsi dipanggil
tapi saya urutan saya untuk memecahkan masalah ini seperti ini: Saya menggunakan kelas sebelum saya membuatnya
tempat yang bertanggung jawab
responding to the Event
NetLog adalah kelas statis yang akan saya jelaskan nanti
langkah selanjutnya adalah
tempat yang bertanggung jawab
firing the Event
langkah ketiga
Saya mengubah The Event dalam kelas yang disebut NetLog
kelas ini sekarang mengandung
the Event
,EventArgs
danEventArgs Enums
danthe function
bertanggung jawab untuk menembak acaramaaf untuk jawaban panjang ini
sumber