委托事件定义
3921 点击·0 回帖
![]() | ![]() | |
![]() | 关闭子窗口告诉父窗体 [csharp] 父窗体 前段: <Window x:Class="RefreshFatherWindow.WindowClose" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="WindowClose" Height="300" Width="300"> <StackPanel> <TextBox Name="tb" /> <Button Content="submit" Click="Button_Click" /> </StackPanel> </Window> viewcode: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes; namespace RefreshFatherWindow { /// <summary> /// interaction logic for WindowClose.xaml /// </summary> public partial class WindowClose : Window { public WindowClose() { InitializeComponent(); } private void Button_Click(object sender, RoutedEventArgs e) { SonWindow son = new SonWindow(); son.Closed += new EventHandler(son_Closed); son.Show(); } public void son_Closed(object obj,EventArgs e) { tb.Text = "儿子窗口已关闭!"; } } } 子窗体: 直接画个名为SonWindow.xaml的窗体, 点击关闭按钮X就会传值到父窗体 子窗体点击后传值到父窗体 [csharp] 父窗体 design: <Window x:Class="RefreshFatherWindow.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525"> <StackPanel> <TextBox Name="tb" /> <Button Content="submit" Click="Button_Click" /> </StackPanel> </Window> viewCode: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace RefreshFatherWindow { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void Button_Click(object sender, RoutedEventArgs e) { SonWindow son = new SonWindow(); son.ChangeTextEvent += new SonWindow.ChangeTextHandler(ChangeTextEvent); son.Show(); } void ChangeTextEvent(string text) { tb.Text = text; } } } 子窗体: design <Window x:Class="RefreshFatherWindow.SonWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="SonWindow" Height="300" Width="300"> <Grid> <Button Content="点击窗口有效果" Click="Button_Click" /> </Grid> </Window> viewcode: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Shapes; namespace RefreshFatherWindow { /// <summary> /// Interaction logic for SonWindow.xaml /// </summary> public partial class SonWindow : Window { //定义委托 public delegate void ChangeTextHandler(string text); //定义事件 public event ChangeTextHandler ChangeTextEvent; public SonWindow() { InitializeComponent(); } private void Button_Click(object sender, RoutedEventArgs e) { ChangeTextEvent("我就是效果!"); } } } | |
![]() | ![]() |