整了一上午终于搞清楚了C#是委托机制!
委托很像C++中的函数指针。
委托很像C++中的函数指针。
现在比如有2个控件。而现在控件1的想去获取控件2的一个方法(必须是公开的)。
控件1被控件2组合。public class 控件2{
private 控件1 对象;
}
从上面来说,控件2想获取控件1那是很简单的,因为控件2包含一个控件1对象。但是控件1想去获取控件2的数据则要用委托!
控件2:
这个时候控件2必须有一个public方法:
public void getData()
{};
控件1:
在C#中委托一般是和事件一起连用的。控件1的事件
//预定义委托
public event EventHandler getIncSideHandle;
//事件
private void btnQuery_Click(object sender, EventArgs e)
{
if (getIncSideHandle != null)
{
getIncSideHandle(sender, e);
}
}
现在控件1把自己的方法
getIncSideHandle定义成了预委托。为了能使得控件2的方法能在控件1中被调用。则需要把自己的方法委托给控件1》做法是在构造方法中
InitializeComponent();
this.incomeQueryCondition1.getIncSideHandle += new EventHandler(getData);
这就相当于控件2把自己的getData方法委托给了控件1的
getIncSideHandle
方法。
这个时候在控件1中
btnQuery_Click调用的
getIncSideHandle其实就是调用
getData()方法!