最近在学习金老师的《.NET2.0面向对象编程揭秘》,学到了13章,委托、事件驱动和异步调用。书上有个试一试,要求:利用委托,达到一个主窗体统计多个从窗体的按钮单击的次数。
效果如下:
frmMain1 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 }frmOther1 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 }之后,我想进一步修改,在一个主窗体上单击按钮,多个从窗体同时显示单击的次数。只是对上面的代码修改了一下,在从窗体初始化后,向主窗体的委托变量赋值时,出现了错误。请大家指教,谢谢。