在使用WPF开发的时候就不免会遇到需要两个窗口间进行传值操作,当然多窗口间传值的方法有很多种,本文介绍的是使用委托实现多窗口间的传值。
在上代码之前呢,先简单介绍一下什么是c#中的委托(如果只想了解如何传值可以略过这部分)在网络上有很多对于委托的介绍和讲解,经过我的学习和总结加上了一点我自己的理解,我认为委托是一种类似于C语言的指针,但是它指向的是方法而不是变量。如果把委托看作一个变量,那么这个变量里存着的就是你目标方法的地址,调用委托约等于调用你的目标方法。(一个人理解欢迎指正交流)
以下正文:
实现窗口间的相互传值,先创建两个窗口,先上代码主窗口代码:
MainWindow.xaml
& lt; Grid> & lt;文本框的名字=" MainWindowTextBox " HorizontalAlignment=白蟆钡纳砀?" 23 "利润率=61 0 0”TextWrapping=鞍啊蔽谋?"空" VerticalAlignment==" 297 "/岸ゼ丁笨矶缺? & lt;按钮内容="打开新窗口”HorizontalAlignment=白蟆北Vそ?10130 0 0”VerticalAlignment=岸ゼ丁笨矶?" 297 "单击=癇uttonBase_OnClick”/比; & lt;/Grid>
MainWindow.xaml.cs
公共空间GetValue(字符串value1,文本框value2) { MainWindowTextBox。文本=value1; } 私人空间ButtonBase_OnClick(对象发送方,RoutedEventArgs e) { Window1 newWindow1=new Window1 (); newWindow1。getTextHandler=GetValue;//将方法赋给委托对象 newWindow1.ShowDialog (); }
效果图如下:
第二个窗口Window1代码:
Window1.xaml
& lt; Grid> & lt;文本框的名字=" Window1TextBox " HorizontalAlignment=白蟆钡纳砀?" 23 "利润率=?4、73、0、0”TextWrapping=文本“包装”=癡erticalAlignment==" 120 "/岸ゼ丁笨矶缺? & lt;按钮内容="传值”HorizontalAlignment=白蟆北Vそ?84125 0 0”VerticalAlignment=岸ゼ丁笨矶?" 120 "单击=癇uttonBase_OnClick”/比; & lt;/Grid>
Window1.xaml.cs
公众委托无效GetTextHandler(字符串value1,文本框value2);//声明委托 公共GetTextHandler GetTextHandler;//委托对象 私人空间ButtonBase_OnClick(对象发送方,RoutedEventArgs e) { getTextHandler (Window1TextBox。文本,Window1TextBox); }
效果图:
实现效果当运行程序后,点击打开新窗口按钮后,会打开Window1窗口,在Window1窗口的文本框中输入内容,点击传值,你所输入的内容就会传到主窗口,通过委托的事件将主窗口中的文本框控件的内容更改为你传过去的值。效果如下:
现在就已经实现了窗口间传值的操作了。接下来我会简单介绍一下以上代码的实现方法和一些自己的理解,如果不感兴趣或者已经会使用委托进行多窗口间的传值了,后面的部分可以略过。
前台代码在此就先不介绍了哈,在MainWindow.xaml.cs文件中
公共空间GetValue(字符串value1,文本框value2)
此方法即为委托的目标方法,此方法返回值为空,也可以设置其返回值,当使用委托时也会收到目标方法的返回值。再有就是此方法接收两个参数,一个是字符串一个是文本框,第二个参数倒是没什么实际含义,只是为了说明这里传递的变量可以多个,也可以是其它对象类型。
newWindow1。getTextHandler=GetValue;//将方法赋给委托对象以前>将方法赋给委托对象,可以理解为把他们两个绑定在一起的getTextHandler这个委托对应的目标方法就是GetValue。
在Windo1.xaml.cs中:
公众委托无效GetTextHandler(字符串value1,文本框value2);//声明委托 公共GetTextHandler GetTextHandler;//委托对象c# WPF通过委托实现多窗口间的传值的方法