-1

I am doing some kind of status reporting so I can update the new status to the UI. For e.g. the status can be - "Loading...", "Loaded..." and so on. My problem is that the StatusChanged event is always null and can't be fired.

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 回答