事件一二

 1 using System;
 2 using System.Collections.Generic;
 3 using System.ComponentModel;
 4 using System.Data;
 5 using System.Drawing;
 6 using System.Linq;
 7 using System.Text;
 8 using System.Windows.Forms;
 9 
10 namespace DelegateTest
11 {
12     public partial class Form1 : Form
13     {
14         public Form1()
15         {
16             InitializeComponent();
17         }
18         public delegate void DrawGeoObjectDelegate(GeoFileds geoFileds, object obj);
19         public event DrawGeoObjectDelegate DrawGeoObjectEvent;
20         test test = null;
21         private void Form1_Load(object sender, EventArgs e)
22         {
23              test = new test(this);
24         }
25 
26         private void button1_Click(object sender, EventArgs e)
27         {
28             if (DrawGeoObjectEvent!=null)
29             {
30                 GeoFileds geo = new GeoFileds();
31                 geo.LayerName = "nihao";
32                 DrawGeoObjectEvent(geo,sender);
33             }
34         }
35 
36         private void button2_Click(object sender, EventArgs e)
37         {
38             test.Remove();
39             if (DrawGeoObjectEvent == null)
40             {
41                 MessageBox.Show("委托清空");
42             }
43            
44         }
45     }
46     public struct GeoFileds
47     {
48         public string LayerName;
49         public string ClassifyName;
50         public string GeoName;
51         public int GeoCode;
52         public string BZ;
53         public string IconPath;
54         public Color lineColor;
55         public double lineWidth;
56         public Color fillColor;
57         public Dictionary<string, string> ExtField;
58     }
59 }
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Windows.Forms;
 6 
 7 namespace DelegateTest
 8 {
 9     class test
10     {
11         Form1 frm = null;
12         public test(Form1 frm1)
13         {
14             frm = frm1;
15             frm.DrawGeoObjectEvent += new Form1.DrawGeoObjectDelegate(frm_DrawGeoObjectEvent);
16         }
17 
18         void frm_DrawGeoObjectEvent(GeoFileds geoFileds, object obj)
19         {
20             MessageBox.Show("图层:"+geoFileds.LayerName);
21 
22         }
23         public void Remove()
24         {
25             frm.DrawGeoObjectEvent -= new Form1.DrawGeoObjectDelegate(frm_DrawGeoObjectEvent);
26         }
27     }
28 }

 

posted @ 2013-07-12 22:44  太一吾鱼水  阅读(194)  评论(0编辑  收藏  举报