событие c # при смене счетчика - PullRequest
1 голос
/ 21 февраля 2012

Я хочу запустить событие, которое произойдет при некотором изменении счетчика, например, каждый раз

int counter;

меняет значение, событие вызывается. У меня что-то вроде из MSDN:

public class CounterChange:INotifyPropertyChanged
{
    private int counter;
    // Declare the event
    public event PropertyChangedEventHandler PropertyChanged;

    public CounterChange()
    {
    }

    public CounterChange(int value)
    {
        this.counter = value;
    }

    public int Counter
    {
        get { return counter; }
        set
        {
            counter = value;
            // Call OnPropertyChanged whenever the property is updated
            OnPropertyChanged("Counter");
        }
    }

    // Create the OnPropertyChanged method to raise the event
    protected void OnPropertyChanged(string name)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if(handler != null)
        {
            handler(this, new PropertyChangedEventArgs(name));
        }
    }
}

Но понятия не имею, что дальше. Как повысить инкремент из программы и связать метод с этим событием.

Ответы [ 2 ]

3 голосов
/ 21 февраля 2012

Возможно, вам придется сделать что-то подобное в своей основной программе:

var counter = new CounterChange(0);
counter.PropertyChanged += SomeMethodYouWantToAssociate;

Итак, когда значение counter.Counter изменится, подписчики события будут уведомлены и исполнены (вмой пример, SomeMethodYouWantToAssociate будет).

private static void SomeMethodYouWantToAssociate(object sender, PropertyChangedEventArgs e)
{
    // Some Magic inside here
}
0 голосов
/ 21 февраля 2012
public class CounterClass
{
    private int counter;
    // Declare the event
    public event EventHandler CounterValueChanged;

    public CounterChange()
    {
    }

    public CounterChange(int value)
    {
        this.counter = value;
    }

    public int Counter
    {
        get { return counter; }
        set
        {
            //Chaeck if has really changed?
            if(counter != value)
            {
                counter = value;
                // Call CounterValueChanged whenever the property is updated
                //check if there are any subscriber to this event
                if(CounterValueChanged!=null)
                    CounterValueChanged(this, new EventArgs());
            }
        }
    }
}

И используйте этот класс вот так

CounterClass cnt = new CounterClass();
cnt.CounterValueChanged += MethodDelegateHere;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...