c# winform 用属性方法实现子窗体修改父窗体控件的值
目标:实现子窗口Form2的lable输入一个字符串,在父窗口Form1的lable中显示出来。
程序的关键是把父窗口类通过构造函数传到子窗口中。
思路:C#中禁止跨线程直接访问控件,所以子窗口线程中不能直接更新父窗体控件,本文使用调用父窗口属性更新父窗口控件。
主窗口Form1 :lable名:labelFather…
子窗口:Form2 lable名:labelChild
//===================程序=
From1.cs
using System;
using System.Windows.Forms;
namespace WindowsFormsApplication2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private string str = "";
public string strLabel//form1的属性
{
get
{
return str;
}
set
{
str = value;
this.labelFather.Text = str;
}
}
private void btnFather_Click(object sender, EventArgs e)
{
Form2 Frm2 = new Form2(this);
Frm2.Show();//显示窗口2
}
}
}
Form2.cs
using System;
using System.Windows.Forms;
namespace WindowsFormsApplication2
{
public partial class Form2 : Form
{
Form1 frm1 = new Form1();
public Form2(Form1 newfrm1)//构造函数参数为Form1类,关键1!
{
this.frm1 = newfrm1;//通过构造函数把Form1传过来,关键2!
InitializeComponent();
}
private void btnChild_Click(object sender, EventArgs e)
{
this.frm1.strLabel = textBoxfChild.Text;
}
}
}