namespace Gossip
{
public delegate void WT();//全局变量: 委托
2我们的目的是什么?子窗体想去控制主窗体。这就相当于我要买房,我是不是要去中介找个业务员啊。public delegate void WT(); 这个中介有了,那业务员呢?在子窗体定义一个属性。
namespace Gossip
{
public partial class Form11串口 : Form
{
#region //全局变量
public WT wt;//委托用于 子调用父
3这个小wt就是业务员。它一直有买房子的需求,那卖家是谁呢?这时在主窗体里,新建子窗体
private void button1_Click(object sender, EventArgs e)//主窗,串口
{
Form11串口 f1= new Form11串口();//串口新 窗体
f1.wt += () => { this.Show(); };//委托
f1.Show();//子窗显示
this.Hide();//主界面隐藏
}
主窗体就相当于卖家,它把自己的一套房子卖给业务员wt;这主窗体里的某个方法就是一套房子。
用+=去绑定。
4这时我们回到子窗体。我子窗体运行完要关闭了,想显示主窗体。 private void Form10编码_FormClosed(object sender, FormClosedEventArgs e)
{
wt();//委托 显示主窗
}
子窗体调用了这个业务员,那业务员绑定的是什么功能呢?我们去主窗体看下:
f1.wt += () => { this.Show(); };//委托
这个this.Show();的功能是显示主窗体;
5补充 委托的类型和绑定方法的签名必须一致:返回类型,参数类型和个数;namespace Gossip
{
public delegate void WT();//全局变量: 委托
WT这个委托是无返回值,无参数的。所以绑定的方法也只能无返回值,无参数
我们总结一下流程。
1在公共区定义委托
2子窗体新建一个委托属性 ,注意public
3主窗体把自己的一个方法绑定给属性
4子窗体调用委托。



