随笔 - 1330  文章 - 1  评论 - 378  阅读 - 482万 

System.EventHandler是在事件处理过程中用于Windows Forms(和APS.NET)API的一种委托类型。如你所见,此委托只能指向第一个参数是System.Object类型的方法,此参数代表触发事件的类型。例如,我们打算改写mnuFileExit_Click()方法的实现,代码如下:

复制代码
private void mnuFileExit_Click(object sender, EventArgs e)
{
    MessageBox.Show(
string.Format("{0} sent this event", sender.ToString()));
    Application.Exit();
}

 
复制代码

我们可以确定是mnuFileExit触发了事件,因为在消息框中显示了字符串。

"Exit sent this event"

你可能很想知道第二个参数System.EventArgs是做什么用的。事实上System.EventArgs只是继承了Object对象,并且提供了一些额外的功能。

 

public class EventArgs
{
  
public static readonly EventArgs Empty;
  
static EventArgs();
  
public EventArgs();
}

然而,在全部的.NET事件处理中,此类型非常有用,它将会有许多其他的派生类型(同样非常有用)。例如,通过扩展EventArgs,MouseEventArgs提供了关于鼠标当前状态的细节。同样通过扩展EventArgs,KeyEventArgs提供了键盘状态的细节(例如按了哪个键),PaintEventArgs提供了与图形相关的数据,诸如此类。你将会看到许多继承于EventArgs的类型(和使用它们的委托),不仅是在Windows Forms中,而且还会在WPF和ASP.NET API中。

许多情况下,只用简单的文本编辑器就可以把越来越多的功能加入到MainWindow中(如:状态栏、对话框等),但是最终我们会累到手抽筋,因为我们还不得不手动配置许多控件的逻辑。好在Visual Studio 2008提供了许多集成的设计器,可以替我们关照这些细节。

posted on   钱途无梁  阅读(3754)  评论(2编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示