使用delegate类型设计自定义事件
2007-11-14 21:14
351 查看
在C#编程中,除了Method和Property,任何Class都可以有自己的事件(Event)。定义和使用自定义事件的步骤如下:
(1)在Class之外定义一个delegate类型,用于确定事件程序的接口
(2)在Class内部,声明一个public event(也可以继承event实现自定义事件)变量,类型为上一步骤定义的delegate类型
(3)在某个Method或者Property内部某处,触发事件
(4)Client程序中使用+=操作符指定事件处理程序
public class ChangeEvent : EventArgs
{
private readonly string _txtstr;
public ChangeEvent(string txtstr):base()
{
_txtstr = txtstr;
}
public string TxtStr
{
get { return _txtstr; }
}
}
public delegate void ChangeEventHander(ChangeEvent e);
public class Change
{
public event ChangeEventHander change;
private string _Text;
private void ChangeTxt(ChangeEvent e)
{
if (change != null)
change(e);
}
public string Text
{
get
{
return _Text;
}
set
{
_Text = value;
ChangeEvent e = new ChangeEvent(_Text);
ChangeTxt(e);
}
}
}
最后在client中添加事件处理程序:
Change change = new Change();
change.change += new ChangeEventHander(client.ChangeTxt);
public void ChangeTxt(ChangeEvent str)
{
this.(变量名) = str.TxtStr;
}
(1)在Class之外定义一个delegate类型,用于确定事件程序的接口
(2)在Class内部,声明一个public event(也可以继承event实现自定义事件)变量,类型为上一步骤定义的delegate类型
(3)在某个Method或者Property内部某处,触发事件
(4)Client程序中使用+=操作符指定事件处理程序
public class ChangeEvent : EventArgs
{
private readonly string _txtstr;
public ChangeEvent(string txtstr):base()
{
_txtstr = txtstr;
}
public string TxtStr
{
get { return _txtstr; }
}
}
public delegate void ChangeEventHander(ChangeEvent e);
public class Change
{
public event ChangeEventHander change;
private string _Text;
private void ChangeTxt(ChangeEvent e)
{
if (change != null)
change(e);
}
public string Text
{
get
{
return _Text;
}
set
{
_Text = value;
ChangeEvent e = new ChangeEvent(_Text);
ChangeTxt(e);
}
}
}
最后在client中添加事件处理程序:
Change change = new Change();
change.change += new ChangeEventHander(client.ChangeTxt);
public void ChangeTxt(ChangeEvent str)
{
this.(变量名) = str.TxtStr;
}
相关文章推荐
- c#事件处理中事件信息EventArgs的使用和类型内部事件委托delegate的调用
- .NET中使用Delegate类型设计自定义事件
- 使用delegate类型设计自定义事件
- 复习扩展方法 涉及委托,这里我使用自定义委托类型 public delegate bb MyFunc<in T,out bb> (T arg)
- RecyclerView的使用 以及RecyclerView的自定义点击事件
- Flex4自定义事件类型Event的相关应用
- c#自定义事件的使用方法
- 使用泛型的自定义事件类来取代自定义事件定义的参数
- Oracle type (自定义类型的使用)
- Android布局设计之ExpandableList绑定XML数据构成级联、item布局页面的控件查找及配置child事件,自定义适配显示内容
- 使用自定义类型
- 16.0 Mybatis_自定义类型处理器_使用自定义的类型处理器处理枚举类型
- 解密jQuery事件核心 - 自定义设计(三)
- TreeSet集合存放自定义类型的对象,可以使用比较器,实现Comparable接口自己设置排序方式
- C#使用Binding事件完成超越内置类型转换的功能
- hibernate中自定义数据类型的使用---UserType,CompositeUserType接口的使用
- Android自定义适配器和ListView的点击事件相结合的使用
- 自定义类型使用range-based for loops
- wxwidgets自定义事件类型的问题
- wxpython中自定义事件的实现与使用方法分析