笔记—————C#窗体间数据的传递(事件)

C#窗体间数据的传递(事件)

窗体间数据的传递,顾名思义至少两个窗体才能进行数据的传递。以下内容为两个窗体间数据的穿的传递。

(一) Form1(没有实例化的父窗体) 窗体向下一个窗体(Form2  用new运算子申请出来的实例对象,子窗体)进行数据的传递。这一个比较简单:在Form2 中声明一个公有的数据成员,在Form2 展示之前对实例Form2 的数据成员进行赋值即可。

(二)Form2 窗向Form1 窗体进行数据的传递:需要用到事件(委托)。

以例题为例:

   笔记—————C#窗体间数据的传递(事件)_第1张图片 笔记—————C#窗体间数据的传递(事件)_第2张图片
该程序的执行过程是这样的:在第一个窗体输入第一个加数,点击按钮后在第二个窗体输入第二个加数再点击按钮,进行运算并把结果返回到第一个窗体。

首先:运用方法一将第一个加数传到第二个窗体,通过form2 的共有的成员函数。
private void button1_Click(object sender, EventArgs e)
        {
            Form2 form2 = new Form2();//创建一个Form2 的实例对象
            form2.Add_NUmber1 = Convert.ToDouble(textBox1.Text);//Form1——>Form2实现参数的传递
            //form2.Send += new Form2.SendNumber(Add);//关键(触发事件)
            form2.Show();
        }


其次:关键的一步就是将另一个加数和结果传到第一个窗体,两个参数传递的类型一样,需要运用事件,将两个变量作为事件函数的两个参数。
在Form2 中:
public delegate void SendNumber(double  a,double b);//委托的定义(一)
        public event SendNumber Send;//实例化对象(二)
        public double Add_NUmber1;
        private void button1_Click(object sender, EventArgs e)
        {
            textBox2.Text = (Convert.ToDouble(textBox1.Text) + Add_NUmber1).ToString();//将计算结果赋值给Form2 的结果TextBox
            Send(Convert.ToDouble(textBox1.Text), Convert.ToDouble(textBox1.Text)+Add_NUmber1);//触发事件(四)
            MessageBox.Show("延时5秒","提示");
            YanShi();
            //this.Show();
            this.Close();
        }

在Form1中:

private void button1_Click(object sender, EventArgs e)
        {
            Form2 form2 = new Form2();
            form2.Add_NUmber1 = Convert.ToDouble(textBox1.Text);//Form1——>Form2
            form2.Send += new Form2.SendNumber(Add);//关键(关联事件)(三)Form2.SendNumber
            form2.Show();
        }
        public void Add ( double Add_Number ,double aluter) //Form2 ——>Form1
        {
            textBox2.Text = Add_Number.ToString();
            textBox3.Text = aluter.ToString();
        }
事件基本分为四步:
1、声明委托(Form2 )
2、实例化委托对象(Form2 )
3、事件关联(Form1 )关联Form1 的共有的成员函数,将两个参数传递到Form1 中
4、触发事件(Form2 )


你可能感兴趣的:(笔记—————C#窗体间数据的传递(事件))