-1

新しいステータスを UI に更新できるように、ある種のステータス レポートを作成しています。たとえば、ステータスは「読み込み中...」、「読み込み済み...」などです。私の問題は、StatusChanged イベントが常に null であり、起動できないことです。

public class StatusReporter
{
    public delegate void StatusChangedEventHandler(Status status);

    public static event StatusChangedEventHandler StatusChanged;

    private static Status status;

    public static Status CurrentStatus
    {
        get
        {
            return status;
        }
        set
        {
            status = value;
            OnStatusChange();
        }
    }

    private static void OnStatusChange()
    {
        if (StatusChanged != null)
        {
            StatusChanged(status);
        }
    }
}
4

1 に答える 1

1

コード:

public class StatusReporter {
    public delegate void StatusChangedEventHandler(Status status);
    public static event StatusChangedEventHandler StatusChanged;

    public static Status CurrentStatus {
        set {
            StatusReporter.OnStatusChange(status=value);
        }

        get {
            return StatusReporter.status;
        }
    }

    static void OnStatusChange(Status status) {
        if(null!=StatusChanged)
            StatusReporter.StatusChanged(status);
    }

    static Status status;
}

テスト:

partial class Form1 {
    static void Form1_StatusChange(Status status) {
        Debug.Print("status changed");
    }

    private void button2_Click(object sender, EventArgs e) {
        StatusReporter.StatusChanged+=Form1_StatusChange;
        StatusReporter.CurrentStatus=new Status(); // assumed, you don't show the Status class
    }
}

なぜすべてstatic なのかわかりませんが。

于 2013-02-24T12:33:00.790 に答える