C#のイベント処理

C#のイベント処理の書き方、なんか珍妙ですぐ忘れるのでメモ。

イベントの型の定義

// イベント引数の型
public class HogeEventArgs : EventArgs
{
    public string HogeData;
}
// イベントの型
public delegate void HogeEvent(object sender, HogeEventArgs e);

イベントを出す側

public class HogeSender
{
    // イベントの定義
    public event HogeEvent onHoge;
    
    private piyo()
    {
        // イベント引数の作成
        HogeEventArgs args = new HogeEventArgs ();
        args.HogeData= "ああああ";
        // イベント発行
        onHoge(this, args);
    }

イベントを受ける側

public class HogeReceiver
{
    private HogeSender hogeSender;

    public HogeReceiver()
    {
        hogeSender = new HogeSender();

        // イベントハンドラの設定
        hogeSender.onHoge += onHoge;
    } 

    // イベントハンドラの実装
    private void onHoge (object sender, HogeEventArgs e)
    {
        // ここにイベント発生時の処理
    }
}