1、主窗体接受信息,其他窗体发送信息:
把其他窗体的信息发送给主窗体,主窗体接受信息,并显示,需要在主窗体
中声明委托,由于是在主窗体接受并显示,所以要在主窗体中根据委托定义
一个方法,然后在其他窗体中创建这个委托对象,让这个委托对象去实现信
息的传递,当然,还需要在主窗体中把对象和具体的方法关联起来,不然怎
么知道具体用哪一个方法去实现。
在主窗体中:
namespace delegateApp1
{
public partial class FrmMain : Form
{
FrmOther objFrm = new FrmOther();
public FrmMain()
{
InitializeComponent();
//FrmOther objFrm = new FrmOther();
//5.将从窗体的委托变量和主窗体的对应方法关联
objFrm.msgSender = this.Receiver;//msgSender为副窗体中的委托对象,为委托对象关联方法
//objFrm.Show();
}
//2.根据委托定义方法
private void Receiver(string counter)
{
//可以再次编写复杂任务处理
this.lblCounter.Text = counter;
}
private void button1_Click(object sender, EventArgs e)
{
objFrm.Show();
}
private void button2_Click(object sender, EventArgs e)
{
objFrm.Close();
}
}
//1.声明委托,根据委托的实际需求定义,声明在类的外部
public delegate void showCounterDelegate(string counter);
}
在其他窗体中:
public partial class FrmOther : Form
{
public FrmOther()
{
InitializeComponent();
}
//3.根据委托,创建委托对象(记录信息)
public showCounterDelegate msgSender;
private int counter = 0;
private void button1_Click(object sender, EventArgs e)
{
counter++;
if (msgSender != null)
{
msgSender(counter.ToString());
}
}
}
2、主窗体发送信息,其他窗体接受信息:
无论是主窗体是发送还是接收,都是在主窗体中声明委托这是第一步。
第二步是根据委托创建具体的实现方法,由于从窗体是信息接收者,所以具体的实现方法要在从窗体中实现(这是第二步,根据委托定义一个具体
的实现方法)。
第三步是创建委托对象,谁是消息发出者谁需要去寻找一个第三者去实现信
息的传递工作,由于主窗体是信息的发出者,当然由他去找这个第三者,所
以在主窗体中委托一个对象去实现信息的传递工作。
第四步:传递人有了但是要告诉这个传递人具体的实现方法,不然你让他去
说啥,所以第四步就是把委托对象和具体的方法关联起来,在主窗体中实现。
第五步:就是调用委托变量去传递信息,也就是告诉你找的这个帮你传话的人去吧去帮我告诉他。然后这个帮你传话的人就根据你所说的具体的方法(说什么和谁说)去实现信息的传递。