C#委托:主窗体对应多个从窗体消息发送

    科技2022-07-11  111

     

     做一个实际项目中遇到委托,不太熟悉,就回头来学习了一下委托。

    一个委托的使用,点击计数按钮,其余三个从窗体会记录点击次数。

     

     


    代码如下:

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace DelegateAPP002 { public partial class FrmMain : Form { public FrmMain() { InitializeComponent(); FrmSlave001 objFrm001_001 = new FrmSlave001(); /// objFrm001_001.Rece objFrm001_001.Show(); FrmSlave002 objFrm002_001 = new FrmSlave002(); objFrm002_001.Show(); FrmSlave003 objFrm003_001 = new FrmSlave003(); objFrm003_001.Show(); // FrmSlave003 objFrm003_001 = new FrmSlave003(); this.msgSender001 = objFrm001_001.Receiver; this.msgSender001 += objFrm002_001.Receiver; this.msgSender001 += objFrm003_001.Receiver; // this.msgSender -= objFrm001_001.Receiver; //this.msgSender002 = objFrm002_001.Receiver; //this.msgSender003 = objFrm003_001.Receiver; } private int count = 0; ///根据委托,创建对象 public ShowCounter_Delegate msgSender001; //public ShowCounter_Delegate msgSender002; //public ShowCounter_Delegate msgSender003; private void btnClick_Click(object sender, EventArgs e) { count++; if (msgSender001 != null) { msgSender001(count.ToString()); } //if (msgSender002 != null) //{ // msgSender002(count.ToString()); //} //if (msgSender003 != null) //{ // msgSender003(count.ToString()); //} } private void btnReset_Click(object sender, EventArgs e) { count = 0; if (msgSender001 != null) { msgSender001(count.ToString()); } //if (msgSender002 != null) //{ // msgSender002(count.ToString()); //} //if (msgSender003 != null) //{ // msgSender003(count.ToString()); //} } } ///1.声明委托,声明在命名空间内,这样每个窗体界面才可以调用该委托 public delegate void ShowCounter_Delegate(string counter); }

     

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace DelegateAPP002 { public partial class FrmSlave001 : Form { public FrmSlave001() { InitializeComponent(); // FrmMain objFrm = new FrmMain(); / objFrm001_002.msgSender = this.Receiver; } /// FrmMain objFrm = new FrmMain(); ///2.根据委托定义方法 public void Receiver(string counter) { this.lblCount.Text = counter; } } }

    源程序下载地址:

    https://download.csdn.net/download/u012519969/12910413

    Processed: 0.038, SQL: 8