C# 委托事件的应用
2016-01-07 16:35
465 查看
经常会听到委托delegate,虽然之前做项目时也会用到,但真正被问什么是委托事件,竟不知该怎么回答
委托,百度一下都是将方法作为方法的参数或者类似C的函数指针之类的
就之前项目使用过的委托事件来讲,为什么要用委托
下面就项目中使用委托所做的整理,只能说委托有下面的应用场景,但不是只有下面的场景。
现一个项目中很多画面需要有一组很相似的按钮,如增删改,这样我们会想到做一个共通的自定义控件继承自UserControl
到时每个画面上再调用这个自定义控件就好,这样共通的属性方法可以写在自定义控件中
那问题来了,那这个自定义控件是拉到画面上了,但是各自画面上增删改的代码都不一样,总不能都写在自定义控件中,
肯定要写在各自画面上,那怎么写呢?
这时就可以用到委托了
在自定义控件中定义
public delegate bool EventButtonHandler(object sender, EventArgs e);
public partial class ButtonCom : UserControl
{
public ButtonCom ()
{
InitializeComponent();
}
// 新增按钮事件
public event EventButtonHandler btnInsClick;
// 删除按钮事件
public event EventButtonHandler btnDelClick;
// 修改按钮事件
public event EventButtonHandler btnUpdClick;
bool _共通属性 = true;
public bool 共通属性
{
get { return _共通属性; }
set
{
_共通属性 = value;
}
}
// 共通的操作写在这边
private void btnInsClick(object sender, EventArgs e)
{
// 共通的操作
}
}
接下来是画面上
this.btnCom.btnInsClick += new EventButtonHandler(this.btnInsert_Click);
this.btnCom.btnDelClick += new EventButtonHandler(this.btnDelete_Click);
this.btnCom.btnUpdClick += new EventButtonHandler(this.btnUpdate_Click);
//各自画面增删改的逻辑代码
private bool btnInsert_Click(object sender, EventArgs e)
{
//各自画面自己的操作逻辑
}
委托,百度一下都是将方法作为方法的参数或者类似C的函数指针之类的
就之前项目使用过的委托事件来讲,为什么要用委托
下面就项目中使用委托所做的整理,只能说委托有下面的应用场景,但不是只有下面的场景。
现一个项目中很多画面需要有一组很相似的按钮,如增删改,这样我们会想到做一个共通的自定义控件继承自UserControl
到时每个画面上再调用这个自定义控件就好,这样共通的属性方法可以写在自定义控件中
那问题来了,那这个自定义控件是拉到画面上了,但是各自画面上增删改的代码都不一样,总不能都写在自定义控件中,
肯定要写在各自画面上,那怎么写呢?
这时就可以用到委托了
在自定义控件中定义
public delegate bool EventButtonHandler(object sender, EventArgs e);
public partial class ButtonCom : UserControl
{
public ButtonCom ()
{
InitializeComponent();
}
// 新增按钮事件
public event EventButtonHandler btnInsClick;
// 删除按钮事件
public event EventButtonHandler btnDelClick;
// 修改按钮事件
public event EventButtonHandler btnUpdClick;
bool _共通属性 = true;
public bool 共通属性
{
get { return _共通属性; }
set
{
_共通属性 = value;
}
}
// 共通的操作写在这边
private void btnInsClick(object sender, EventArgs e)
{
// 共通的操作
}
}
接下来是画面上
this.btnCom.btnInsClick += new EventButtonHandler(this.btnInsert_Click);
this.btnCom.btnDelClick += new EventButtonHandler(this.btnDelete_Click);
this.btnCom.btnUpdClick += new EventButtonHandler(this.btnUpdate_Click);
//各自画面增删改的逻辑代码
private bool btnInsert_Click(object sender, EventArgs e)
{
//各自画面自己的操作逻辑
}
相关文章推荐
- c#自动关闭 MessageBox 弹出的窗口
- 01.C#基本使用
- C# Best Practices - Accessing and Using Classes
- C# 两个独立exe程序直接通信
- C#中Invoke的用法(转)
- 策略模式 c#
- c#多线程中(interrupt的实例使用)
- 命令模式 c#
- c#多线程中(前台线程与后台线程的区别)
- C#正则表达式开源工具
- C#开发外挂-获取游戏基址(Cheat Engine使用方法)
- C# WinForm程序退出的方法
- C#中几种常见的字符串方法
- c# 文件转换成base64
- C# 大端与小端
- C# 切割超级大图(.bmp)[1G以上超大图片分块加载代码]
- C# socket
- 日常收集C#接口知识(知识全面)
- C# - 程序的执行
- 浅谈C#类成员的访问属性