子窗体向主窗体传递消息可以使用委托的方式
Delegate:委托是一种存储函数引用的类型。
委托定义了指定一个返回类型和一个参数列表。
定义了委托的原型之后,就可以声明该委托的变量,就可以把一个返回类型了参数列表跟委托一样的函数引用给这个变量。
实现效果:
步骤一:
public delegate void PassMsgDelegate(String messege); // 1.步骤一声明委托
步骤二:声明委托变量
public PassMsgDelegate passMsgdelegate = null;
步骤三:声明并写委托方法
public void receiveMsg(String msg)
{
this.textBoxMain.Text = msg;
}
步骤四:
//实例化需要委托的类的对象,然后对象的委托变量关联到委托方法。
ChildForm = new Window_Child1();
ChildForm.show();
ChildForm.passMsg = receiveMsg; // 关联委托变量
步骤五:调用委托函数
passMsg(this.textBoxChild.text.Trim()); // 在需要委托的类(子窗口)执行
主窗口代码:
public partial class MainWindow : Window
{
public delegate void PassMsgDelegate(String messege); // 1.步骤一声明委托
private Window_Child1 ChildForm = null;
public MainWindow()
{
InitializeComponent();
}
public void ReceiveMsg(String msg)
{
this.textBoxMain.Text = msg;
}
private void Button_Click(object sender, RoutedEventArgs e)
{
ChildForm = new Window_Child1();
ChildForm.Show();
// 4关联委托变量
ChildForm.passMsg = ReceiveMsg;
}
private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
{
Trace.WriteLine("TextBox_TextChanged");
}
private void Button_Click_1(object sender, RoutedEventArgs e)
{
ChildForm.textBoxChild.Text = "asdasdasd";
}
}
}
子窗口代码:
public partial class Window_Child1 : Window
{
public Window_Child1()
{
InitializeComponent();
}
// 3.创建委托变量
public PassMsgDelegate passMsg ;
private void Button_Click(object sender, RoutedEventArgs e)
{
// 5.使用委托变量传值
passMsg(this.textBoxChild.Text.Trim()); // Trim去掉前后的空格
}
}