最近学习委托的时候遇到一个比较有意思的功能,正常情况下子父窗体间通信比较困难,这时可以使用委托,来进行子父窗体间通信。
首先在父窗体上绘制一个textbox和一个buttom
然后创建子窗体:
选择窗体添加:
再添加一个textbox和buttom如下:
然后实现子窗体发送textbox里的内容给父窗体的textbox显示
1.主窗体代码构成
public Form1()
{
InitializeComponent();
}
public void ChangeTextVal(string TextVal)
{
this.textBox1.Text = TextVal;
}
private void button1_Click(object sender, EventArgs e)
{
Form2 SubForm = new Form2();
// 3.将ChangeTextVal加入到委托事件中
// 等效于:
// SubForm.ChangeTextVal += ChangeTextVal;
SubForm.ChangeTextVal += new DelegateChangeTextVal(ChangeTextVal);
SubForm.ShowDialog();
}
2.子窗体代码构成
// 1.定义委托类型(全局公有)
public delegate void DelegateChangeTextVal(string TextVal);
public partial class Form2 : Form
{
// 2.定义委托事件
public event DelegateChangeTextVal ChangeTextVal;
public Form2()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
ChangeMainFormText(this.textBox1.Text);
}
private void ChangeMainFormText(string TextVal)
{
// 4.调用委托事件函数
ChangeTextVal(TextVal);
}
3.实现结果
在子窗体中输入信息,点击发送,即可在父窗体的textbox里显示