更改变量值时调用函数的最佳方法是什么?

J.D*_*Doe 1 c# triggers event-handling inotifypropertychanged winforms

说我有int Index = 0;.用户可以在程序的任何位置更改此值.如果是这样,我需要将所有屏幕更新为与新索引值相关的数据.我有一个功能,我只需要帮助搞清楚如何调用它.

我的想法是创建一个计时器,并在每个tick事件中检查我的变量的值Index是否已经改变.如果是,则执行我的功能.但这对我来说似乎真的很业余.必须有更正确的东西吗?我听说过一些叫做"INotifyPropertyChanged"之类的东西,但是我很难找到一个如何工作的可靠例子.

非常感谢任何想法,谢谢.

The*_*der 7

您可以使用事件并订阅它,然后在处理程序中调用该方法.您将像这样创建事件:

public event IndexChangedEventHandler IndexChanged;
public delegate void IndexChangedEventHandler(int newValue);

protected virtual OnIndexChanged(int newValue)
{
    if (IndexChanged != null)
        IndexChanged(newValue);
}
Run Code Online (Sandbox Code Playgroud)

然后使用属性来包装索引字段并在其中调用事件:

private int _index;
public int Index
{
    get
    {
         return _index;
    }
    set
    {
        _index = value;
        OnIndexChanged(value);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后您需要做的就是订阅事件,例如:

IndexedChanged += new IndexChangedEventHandler(IndexChanged_EventHandler);

private void IndexChanged_EventHandler(int newValue)
{
    //call your update method here
}
Run Code Online (Sandbox Code Playgroud)