• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#子窗口与父窗口交互(使用委托和事件)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

目标:在子窗口Form2上单击按钮时向Form1传递一组自定义参数,并显示在父窗口Form1上。

方法:有很多方法,这里只介绍委托和事件的实现方式。

思路:Form2中定义事件,Form1创建Form2并订阅事件;Form2触发事件后传递参数到Form1,Form1处理参数。

   

Form1代码如下:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

 

namespace FormDataInteractive

{

/// <summary>

/// powered by shadu {at} foxmail.com

/// </summary>

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

 

private void button1_Click(object sender, EventArgs e)

{

// 创建Form2,并添加事件处理函数

Form2 frm = new Form2();

frm.DataChange += new Form2.DataChangeHandler(DataChanged);

frm.ShowDialog();

}

 

public void DataChanged(object sender, DataChangeEventArgs args)

{

// 更新窗体控件

textBox1.Text = args.name;

textBox2.Text = args.pass;

}

}

}

 

Form2代码如下:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

   

namespace FormDataInteractive

{

    public partial class Form2 : Form

    {

        // 定义委托

        // public delegate void DataChangeHandler(string x); 一次可以传递一个string

        public delegate void DataChangeHandler(object sender, DataChangeEventArgs args);

        // 声明事件

        public event DataChangeHandler DataChange;

   

        // 调用事件函数

        public void OnDataChange(object sender, DataChangeEventArgs args)

        {

            if (DataChange != null)

            {

                DataChange(this, args);

            }

        }

   

        public Form2()

        {

            InitializeComponent();

        }

   

        private void button1_Click(object sender, EventArgs e)

        {

            // 触发事件, 传递自定义参数

            OnDataChange(this, new DataChangeEventArgs(textBox1.Text, textBox2.Text));

        }

    }

   

    /// <summary>

    /// 自定义事件参数类型,根据需要可设定多种参数便于传递

    /// </summary>

    public class DataChangeEventArgs : EventArgs

    {

        public string name { get; set; }

        public string pass { get; set; }

        public DataChangeEventArgs(string s1, string s2)

        {

            name = s1;

            pass = s2;

        }

    }

}

 

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
转【C#调用DLL的几种方法,包括C#调用C\C++\C#DLL】发布时间:2022-07-13
下一篇:
C#保存文本txt保存日志保存.txt发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap