WinForm 中两个窗口之间传递数据

时间:2022-04-12 11:30:49

方法有很多种,这里介绍项目中使用的两种

一、通过委托+事件的方法进行传值 (点击Form2中的button1按钮,将会把Form2中的textbox.text 传给Form1中的 lable.text)

先上效果图

WinForm 中两个窗口之间传递数据

以下是代码

public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
public delegate void SendDataInvoke(string value);
public event SendDataInvoke SendData; private void button1_Click(object sender, EventArgs e)
{
SendData(textBox1.Text);
}
}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} public delegate void MyInvoke(); private void button1_Click(object sender, EventArgs e)
{
Form2 frm = new Form2();
frm.SendData += new Form2.SendDataInvoke(frm_SendData);
frm.Show();
} private void frm_SendData(string value)
{
label1.Text = value;
}
    }

二、项目上前任开发所写的方法,通过在Form1定义一个方法,在FORM2里直接调用

效果一样

WinForm 中两个窗口之间传递数据

代码

public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
Form1 frm = (Form1)this.Owner; frm.ShowData(textBox1.Text); }
} public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public void ShowData(string value)
{
label1.Text = value;
} private void button1_Click(object sender, EventArgs e)
{
Form2 frm = new Form2();
this.AddOwnedForm(frm);
frm.Show();
} }