事件一二

复制代码
 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 @   太一吾鱼水  阅读(196)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示