事件委托 EventHandler
事件就是当对象或类状态发生改变时,对象或类发出的信息或通知。发出信息的对象或类称为"事件源",对事件进行处理的方法称为"接收者",通常事件源在发出状态改变信息时,它并不知道由哪个事件接收者来处理.这就需要一种管理机制来协调事件源和接收者,C++中通过函数指针来完成的.在C#中事件使用委托来为触发时将调用的方法提供类型安全的封装
事件的声明
1.声明一个委托
public delegate void EventHandler(object sender, System.EventArgs e);
2.声明一个事件
public event EventHandler Changed;
3.引发一个事件
public OnChanged(EnventArgs e)
{
if ( Changed != null)
{
Changed(this,e);
}
}
4.定义事件处理程序
public MyText_OnChanged(Object sender,EventArgs e)
{
...
}
5.订阅事件(将事件处理程序添加到事件的调用列表中)
myText.Changed += EventHandler(MyText_OnChanged);
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 事件的委托 { class Program { static void Main(string[] args) { MyClass myClass = new MyClass(); // 6,将事件处理程序添加到事件的调用列表中(即事件布线) myClass.Changed += new MyClass.ChangedEventHandler(myText_Changed); string str = ""; while (str != "quit") { Console.WriteLine("please enter a string:"); str = Console.ReadLine(); myClass.Text = str; } } // 对Change事件处理的程序 private static void myText_Changed(object sender, EventArgs e) { Console.WriteLine("text has been changed :{0}\n", ((MyClass)sender).Text); } } public class MyClass { //1,声明空字符传myStr; private string myStr = ""; //2,定义事件的委托 public delegate void ChangedEventHandler(object sender, EventArgs e); //3,定义一个事件 public event ChangedEventHandler Changed; //4,触发事件 protected virtual void OnChanged(EventArgs e) { if (this.Changed != null) this.Changed(this, e); } // 5,Text属性 public string Text { get { return this.myStr; } set { this.myStr = value; // 文本改变时触发Change事件 this.OnChanged(new EventArgs()); } } } }
,博客记录生活,技术改变生活
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)