通过事件实现子窗体向父窗体传送数据

 

//form1

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;

 

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

namespace WindowsFormsApp2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void textBox1_TextChanged(object sender, EventArgs e)
{


}

private void textBox2_TextChanged(object sender, EventArgs e)
{


}

private void button1_Click(object sender, EventArgs e)
{
// 创建Form2,并添加事件处理函数
Form2 frm = new Form2();//创建窗体
frm.DataChange += new Form2.DataChangeHandler(DataChanged);//并且指定Form2送过来的处理函数
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.Threading.Tasks;
using System.Windows.Forms;


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


namespace WindowsFormsApp2
{
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));

}

private void textBox1_TextChanged(object sender, EventArgs e)
{

 


}

private void textBox2_TextChanged(object sender, EventArgs e)
{

 

 

}
}


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

/// </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;
}

}
}

 

posted @ 2020-08-10 15:39  Jiangxuhua  阅读(73)  评论(0)    收藏  举报