winfrom 委托实现父窗体传值子窗体,子窗体传值给父窗体
简单记录下C# 使用匿名委托实现父窗体和子窗体之间的传值原理
实列(1):父窗体传递给子窗体传值:
父窗体定义的代码:
在父窗体定义一个按钮,在按钮事件里面编写如下代码
//父窗体定义委托
public Action<string> FCZ;
private void button2_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2();
//实例化委托,父窗体的委托实现是子窗体的GetValue函数实现。
FCZ = form2.GetValue;
form2.Show();
//直接调用委托实现传值
FCZ(textBox2.Text);
}
子窗体定义的代码:
/// <summary>
/// 父窗体调用子窗体的方法,实现父窗体的参数传递给子窗体,并赋值
/// </summary>
/// <param name="str"></param>
public void GetValue(string str)
{
textBox1.Text = str;
}
实列(2)子窗体传值给父窗体的实现
父窗体定义的代码:
private void button1_Click(object sender, EventArgs e)
{
//利用委托实现子传父,窗体传值
Form2 form2 = new Form2();
//子窗体注册委托
form2.Poststring += ChangeLblText;
form2.Show();
}
//父窗体的方法函数,供子窗体调用
//言外之意可以理解成父窗体的方法传递给子窗体
public void ChangeLblText(string str)
{
//子窗体传递过来的值赋值给父窗体的文本框
this.textBox1.Text = str;
}
子窗体定义的代码:
在子窗体定义一个按钮和文本框
//定义委托-使用匿名委托
//在父窗体里面实现注册,利用+=;
public Action<string> Poststring;
private void button1_Click(object sender, EventArgs e)
{
//委托传值
//此时传值的时候,其实在父窗体里面已经注册过了这个委托
Poststring(textBox1.Text);
}
备注:本实列简单介绍委托的窗体之间传值使用,当然有很多种传值方式,此列中的委托升级版,可以调整优化成事件方式,不在赘述,本人工作较忙,留下此章,只为记录。如有不当之处,理解错误之处,还请原谅,谢谢你的观赏。