读书人

问事件方面的有关问题

发布时间: 2011-12-28 22:45:21 作者: rapoo

问事件方面的问题
单文档的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);
}
}

读书人网 >C#

热点推荐