在变量值发生变化时调用函数的最佳方式?
Best way to call a function in the event of a variable's value is changed?
说我有一个 int Index = 0;
。用户可以在程序的任何时候更改此值。当它出现时,我需要将所有屏幕更新为与该新索引值相关的数据。我有一个函数,我只需要帮助弄清楚如何调用它。
我的想法是创建一个计时器,并在每个滴答事件中检查我的变量 Index
的值是否已更改。如果是,则执行我的功能。但这对我来说真的很业余。必须有更直接的东西吗?我听说过一个叫做 "INotifyPropertyChanged" 或类似的东西,但我很难找到一个具体的例子来说明它是如何工作的。
非常感谢任何想法。
您可以使用一个事件并订阅它,然后在处理程序中调用该方法。您将像这样创建事件:
public event IndexChangedEventHandler IndexChanged;
public delegate void IndexChangedEventHandler(int newValue);
protected virtual OnIndexChanged(int newValue)
{
if (IndexChanged != null)
IndexChanged(newValue);
}
然后使用 属性 包裹您的索引字段并在其中调用事件:
private int _index;
public int Index
{
get
{
return _index;
}
set
{
_index = value;
OnIndexChanged(value);
}
}
那么您需要做的就是订阅事件,例如:
IndexedChanged += new IndexChangedEventHandler(IndexChanged_EventHandler);
private void IndexChanged_EventHandler(int newValue)
{
//call your update method here
}
说我有一个 int Index = 0;
。用户可以在程序的任何时候更改此值。当它出现时,我需要将所有屏幕更新为与该新索引值相关的数据。我有一个函数,我只需要帮助弄清楚如何调用它。
我的想法是创建一个计时器,并在每个滴答事件中检查我的变量 Index
的值是否已更改。如果是,则执行我的功能。但这对我来说真的很业余。必须有更直接的东西吗?我听说过一个叫做 "INotifyPropertyChanged" 或类似的东西,但我很难找到一个具体的例子来说明它是如何工作的。
非常感谢任何想法。
您可以使用一个事件并订阅它,然后在处理程序中调用该方法。您将像这样创建事件:
public event IndexChangedEventHandler IndexChanged;
public delegate void IndexChangedEventHandler(int newValue);
protected virtual OnIndexChanged(int newValue)
{
if (IndexChanged != null)
IndexChanged(newValue);
}
然后使用 属性 包裹您的索引字段并在其中调用事件:
private int _index;
public int Index
{
get
{
return _index;
}
set
{
_index = value;
OnIndexChanged(value);
}
}
那么您需要做的就是订阅事件,例如:
IndexedChanged += new IndexChangedEventHandler(IndexChanged_EventHandler);
private void IndexChanged_EventHandler(int newValue)
{
//call your update method here
}