我眼中委托的真正面貌(一)
2009-05-07 08:26:53 来源:WEB开发网所以,C#中的事件本身就是一种(多重)委托机制,凭借关键字event,使得我们在控件中定义好的事件专用委托实例对象在顶层的Demo程序的事件窗口中被自动识别。也就是说,即使不用事件,纯用委托,事件的机制一样可以实现,问题只是这样的委托对象无法轻易被外界识别罢了。
5.纯用委托仿真控件的事件机制
首先,我们依然建立一个控件项目,比之上一段代码作如下调整:
namespace Ctrleven
{
public partial class UserControl1 : UserControl
{
//定义委托
public delegate void MyEventHander();
//用委托声明事件
public MyEventHander MyEvent;//纯用委托仿真event对象
public UserControl1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
MyEvent();
}
}
}
在这里我们去掉了event关键字,改用纯委托对象来实现。
而后,同样建立一个上层的Demo程序来调用这个控件,同样比之上一段代码要作些许细微的调整:
namespace EventDemo
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.userControl11.MyEvent += new Ctrleven.UserControl1.MyEventHander(this.VirtualEvent);
}
public void VirtualEvent()
{
MessageBox.Show("委托仿真事件调用成功!");
}
}
}
更多精彩
赞助商链接