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

  最近在学习金老师的《.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  }

之后,我想进一步修改,在一个主窗体上单击按钮,多个从窗体同时显示单击的次数。只是对上面的代码修改了一下,在从窗体初始化后,向主窗体的委托变量赋值时,出现了错误。请大家指教,谢谢。

你可能感兴趣的:(统计)