前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >委托————窗体之间传值练习------引出事件的概念

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

作者头像
静心物语313
发布2020-03-24 11:31:59
4640
发布2020-03-24 11:31:59
举报

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

窗体1的代码:

代码语言:javascript
复制
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的代码:

代码语言:javascript
复制
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();
            }
        }
    }
} 
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档