委托(一个主窗体统计多个从窗体的按钮单击的次数)

时间:2022-04-22
本文章向大家介绍委托(一个主窗体统计多个从窗体的按钮单击的次数),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

  最近在学习金老师的《.NET2.0面向对象编程揭秘》,学到了13章,委托、事件驱动和异步调用。书上有个试一试,要求:利用委托,达到一个主窗体统计多个从窗体的按钮单击的次数。 效果如下:

frmMain   1 using System;
 2 using System.Collections.Generic;
 3 using System.ComponentModel;
 4 using System.Data;
 5 using System.Drawing;
 6 using System.Text;
 7 using System.Windows.Forms;
 8 
 9 namespace DelegateInForm
10 {
11  public partial class frmMain : Form
12     {
13  public frmMain()
14         {
15             InitializeComponent();     
16         }
17  private void ShowCount(string count)
18         {
19             lblCount.Text = count;
20         }
21 
22  private void btnClick_Click(object sender, EventArgs e)
23         {
24  //创建从窗体对象并显示
25             frmOther frm = new frmOther();
26             frm.recorder = this.ShowCount;//向从窗体的委托变量赋值
27             frm.Show();
28         }
29     }
30 }
frmOther   1 using System;
 2 using System.Collections.Generic;
 3 using System.ComponentModel;
 4 using System.Data;
 5 using System.Drawing;
 6 using System.Text;
 7 using System.Windows.Forms;
 8 
 9 namespace DelegateInForm
10 {
11  public partial class frmOther : Form
12     {
13  //定义了一个委托类型ShowInfo
14  public delegate void ShowInfo(string info);
15 
16  public frmOther()
17         {
18             InitializeComponent();
19         }
20  //委托变量recorder
21  public ShowInfo recorder;
22  private static int counter = 0;//计数器,使用static可以多个从窗体点击计数
23  private void btnClickME_Click(object sender, EventArgs e)
24         {
25             counter++;
26  if (recorder != null)
27             {
28                 recorder(counter.ToString());
29             }
30         }
31     }
32 }
 
 
 之后,我想进一步修改,在一个主窗体上单击按钮,多个从窗体同时显示单击的次数。只是对上面的代码修改了一下,在从窗体初始化后,向主窗体的委托变量赋值时,出现了错误。请大家指教,谢谢。