委托————窗体之间传值练习------引出事件的概念

练习:新建连个窗体,当点击Form1窗体的“传过去”,文本内容就显示在了,第二个窗体中;当点击第二个窗体时候,值又返回到窗体1的文本框中!

窗体1的代码:

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 窗体传值
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

      

        private void button1_Click(object sender, EventArgs e)
        {
            //1、显示第二个窗口
            //2、问题:如何传递值?
            //3、去第二个窗体
            Form2 fm = new Form2(txtGO.Text,Test);//8、接下来进行传值//将值传给form2    //12、将Test()方法传给窗体2(有错误,说明:窗体2中的委托没有完成!)
            fm.Show();

        }

        //9、问题:如何将点击二窗体进行值的返回?

        //分析::使用委托。。对窗体1 创建一个方法Test()用来改变文本框的值,,这个方法,通过点击窗体2的按钮进行触发
        public void Test(string names)
        {
            txtGO.Text = names;
        }
        //10、接下来,就要在Form2中进行Test()方法的委托
    }
}

窗体2的代码:

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 窗体传值
{
    //11、写委托
    public delegate void TestDel(string name1);

    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
        //4、这里使用的方法,不使用字段,属性,那种普通的写法,
        //5、在这里用一个构造函数,进行接收来自外类的值

        //14、写字段
        public TestDel _mdl;
        public Form2(string name,TestDel mdl)
            : this()
        {
            //6、利用属性赋值
            //7、返回到窗体1,
            this.textBack.Text = name;
            this._mdl = mdl;

        }

        private void button1_Click(object sender, EventArgs e)
        {
            //mdl   发现无法调用mdl //13、需要对委托进行字段的赋值
           // _mdl(textBack.Text);//15、将第二个窗体中的文本返回。。。。这里首先要对委托进行null 判断(重要!!!)
            if (_mdl!=null)
            {
                _mdl(textBack.Text);
                this.Close();

            }
        }
    }
}

 

posted @ 2015-05-23 15:09  t800  阅读(111)  评论(0)    收藏  举报