您的位置:首页 > 编程语言 > C#

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)

{

//各自画面自己的操作逻辑

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: