如何在c#中處理多個(gè)event

c#
小樊
82
2024-09-28 04:17:56

在C#中,處理多個(gè)事件需要使用事件處理器和委托

  1. 首先,定義委托。委托將作為事件處理器的簽名。例如,定義一個(gè)名為MyEventHandler的委托:
public delegate void MyEventHandler(object sender, EventArgs e);
  1. 創(chuàng)建事件發(fā)布者類。這個(gè)類將包含事件的聲明和觸發(fā)器。例如,創(chuàng)建一個(gè)名為EventPublisher的類:
public class EventPublisher
{
    // 聲明事件
    public event MyEventHandler MyEvent;

    // 觸發(fā)事件
    protected virtual void OnMyEvent()
    {
        MyEvent?.Invoke(this, EventArgs.Empty);
    }
}
  1. 創(chuàng)建事件訂閱者類。這個(gè)類將包含事件處理器。例如,創(chuàng)建一個(gè)名為EventSubscriber的類:
public class EventSubscriber
{
    public EventSubscriber(EventPublisher publisher)
    {
        // 訂閱事件
        publisher.MyEvent += OnMyEvent;
    }

    // 事件處理器
    private void OnMyEvent(object sender, EventArgs e)
    {
        Console.WriteLine("Event triggered!");
    }
}
  1. 在主程序中,實(shí)例化事件發(fā)布者和訂閱者,并觸發(fā)事件:
class Program
{
    static void Main(string[] args)
    {
        EventPublisher publisher = new EventPublisher();
        EventSubscriber subscriber = new EventSubscriber(publisher);

        // 觸發(fā)事件
        publisher.OnMyEvent();
    }
}

當(dāng)你運(yùn)行這個(gè)程序時(shí),你將看到"Event triggered!"輸出,表明事件已被成功觸發(fā)和處理。

根據(jù)需要,你可以為EventPublisher類添加更多的事件,并在EventSubscriber類中為每個(gè)事件添加相應(yīng)的事件處理器。

0