本文共 1860 字,大约阅读时间需要 6 分钟。
1、主窗体
using System;
using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; 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 DelegateSubFormToMainFormMessage
{ //声明委托 public delegate void ShowCounter(string Counter); /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); SubForm subForm = new SubForm(); //委托变量关联方法 subForm.messageSender = this.Receiver; subForm.Show(); } //根据委托创建方法 public void Receiver(string Counter) { this.MainFormLabel.Content = Counter; } } } 2、子窗体 在子窗体里面我们创建了委托变量,因为该委托变量是public的,且是子窗体SubForm类的成员变量,因此在主窗体的构造函数当中实例化子窗体后,是可以访问到该委托变量的,而且在主窗体当中还将该委托变量与Receiver方法进行了关系,所以在SubForm子窗体当中调用委托变量的时候是可以间接调用到MainForm主窗体当中与委托变量相关联的Receiver方法(附带参数)的。Receiver方法通过委托传递过来的参数进而改变所在窗体中的MainFormLabel控件的值。using System;
using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; 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 DelegateSubFormToMainFormMessage
{/// <summary>
/// Interaction logic for SubForm.xaml /// </summary> public partial class SubForm : Window {public SubForm()
{ InitializeComponent(); } //创建委托变量 public ShowCounter messageSender; //计数 public int counter = 0; private void ClickMe(object sender, RoutedEventArgs e) { counter++; //调用委托变量 传递消息参数 if (messageSender!=null) { messageSender(counter.ToString()); } } } }转载地址:http://teooi.baihongyu.com/