事件驱动是.net的核心,在某些情况我们可能要实现这样的功能:当我们修改程序中某些变量时,希望程序能够驱动界面的显示或者去完成某些功能,这就是典型的事件驱动。要实现这个功能有很多种方法,比如可以自己定义委托事件,然后注册触发。当然还有更方便的方法那就是使用INotifyPropertyChanged类。废话少说,看代码先。。
第一步:定义属性类
//静态统计数据
public class StatisticsData : INotifyPropertyChanged
{
public static event PropertyChangedEventHandler PropertyChanged=null;
// 实例个数
private static int _InstanceNum = 0;
public static int InstanceNum
{
get { return StatisticsData._InstanceNum; }
set
{
if (value != StatisticsData._InstanceNum)
{
StatisticsData._InstanceNum = value;
NotifyPropertyChanged("InstanceNum");//属性修改,通知PropertyChanged事件处理
}
}
}
}
第二步:注册事件,使用属性类
public partial class MainForm : Form
{
public MainForm()
{
Simulator.statistics.StatisticsData.PropertyChanged += new PropertyChangedEventHandler(stat_PropertyChanged);//注册事件
}
//统计数据更改通知,修改界面显示数据
void stat_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
switch (e.PropertyName)
{
case "InstanceNum"://根据属性名,处理业务逻辑
RunInstance_label.Text=Simulator.statistics.StatisticsData.InstanceNum.ToString();
break;
default:
break;
}
}
}
注意: NotifyPropertyChanged的参数是属性的名称
当修改InstanceNum属性的值时,通过事件通知修改RunInstance_label的text的值