我眼中委托的真正面貌(一)
2009-05-07 08:26:53 来源:WEB开发网这里,稍稍说明一下控件中事件的声明。事件的声明需使用关键字event,大致的形式是event +(某委托类型)+ 一个实例对象。
而后我建立一个Demo程序,来调用这个用户控件,代码如下:
namespace EventDemo
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void userControl11_MyEvent()
{
MessageBox.Show("委托事件调用成功!");
}
}
}
在工程中引入用户控件,打开其事件窗口可以找到我们事先定义的事件MyEvent,双击就可以在其中写入代码。这里,我用一个MessageBox来进行测试。
编译通过后,单击控件上的button就会弹出我们的MessageBox,事件调用成功!
呵呵……发现了吗?这段代码所隐含事件机制的雏形实际上就是第三段代码中所实现的效果。只不过这里我们是用一个具体的窗口类控制了其所引入控件类中的委托对象。
看到类构造方法中的InitializeComponent()方法了吗?双击转到定义,在Windows窗体设计器生成的代码中,在你所引入的控件属性初始化模块下有这样一句代码:this.userControl11.MyEvent += new Ctrleven.UserControl1.MyEventHander(this.userControl11_MyEvent); 你可以拿来跟第三段代码中的那句 objcls.MyObjdelegate += new ObjCls.MyDelegete(DelegateFun); 对比一下,发现了吗?是一样的!
更多精彩
赞助商链接