日期:2014-05-19  浏览次数:20777 次

问事件方面的问题
单文档的winform程序,主窗体中,有一个pravite的int变量,   当这个变量变成0时就引发一个事件.对应的有个事件处理程序.请问应该怎么做.C#事件模型把我弄糊涂
namespace   EventDemo
{
        public   partial   class   FormMain   :   Form
        {
                public   FormMain()
                {
                        InitializeComponent();
                }

                //---这个变量不关心它的值怎么来的.只关系它变成0就引发事件.
                int   _Count;
             
                //   后面的事件部分的程序怎么写
                ....  

        }
}

------解决方案--------------------
你最好给这个变量做为一个属性,在有可能改变这个变量值及读取这个值的地方都用这它所对应的属性来处理,然后在属性的set方法体中添加一个事件就可以了。比如如下:
public event EventHandler OnCountChanged;
private int _Count;

public int Count
{
get
{
reutrn this._Count;
}
set
{
if (this._Count!=value)
{
this._Count = value;
if (this.OnCountChanged!=null)
{
EventArgs arg = new EventArgs();
this.OnCountChanged(this, args);
}
}
}
}
------解决方案--------------------
public new event IChangedZeroHandler IChangedZero;

public Form1()
{

}
private int _i;

public int i
{
get { return _i; }
set {
i = value;
if (value == 0)
{
System.EventArgs e = new EventArgs();
OnIChangedZero(_i, e);
}
}
}

protected void OnIChangedZero(object sender, EventArgs e)
{
if (IChangedZero != null)
{
IChangedZero(sender, e);
}
}