利用委托的方法实现2个窗体之间的通信的一个小练习

----------- 发送端窗体代码-------------
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace 用委托的方法进行2个窗体之间的通讯
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
        public DelegateConnect send;//第二步:定义一个委托的对象

//这里为什么没有直接用DelegateConnect send=new DelegateConnect(方法名);

//因为这里需要传的方法参数是在Form1(接受端)定义的,并且在Form1里面进行绑定

        int count = 0;
        private void button1_Click(object sender, EventArgs e)
        {
            count++;
            if (send != null)
            {
                send(count.ToString());//第四步:给委托对象需要调用的函数传递参数
            }
        }
      
         private void Form2_Load(object sender, EventArgs e)
         {
         }
    }
        public delegate void DelegateConnect(string str);//第一步:声明一个委托的类
 
}
----------- 接收端窗体代码-------------
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace 用委托的方法进行2个窗体之间的通讯
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
          Form2 form = new Form2();
            form.Show();
            form.send = this.receive;//第三步:在这里让委托的对象send跟receive方法(函数)绑定

//让委托的这个对象去调用receive这个函数
                                     //而这个函数的参数由Form2的send(count.ToString());这句来传递过来

        }
        private void Form1_Load(object sender, EventArgs e)
        {
            
        }
   public      void receive(string str)
        {
            textBox1.Text = str;
        }
    }
}



已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页