c# 事件的含义究竟是什么(刚学习到委托与事件的菜鸟提问)

sshziliao 2013-10-24 08:25:38
在没有学习委托之前,觉得事件就是单击一个按钮、双击一个按钮等动作或者行为(事件是动作或行为)。

后来又觉得:单击一个按钮、双击一个按钮仅仅是动作(或行为),这些动作行为本身不是事件,但是这些动作行为却能触发相应的事件。

现在:学习了委托与事件之后,又知道事件只是委托的一个实例,它是类的成员。

请问:这三种对事件的理解哪种对啊?

我查阅相关资料:上面说:
事件有两种不同的含义:第一:表示发生了某个有趣的事情,第二:表示C#语言中已定义的一个对象。

还有人说:
①从机制上讲,事件就是你干了什么,你点击了一个button,选择了一个下拉菜单,点击关闭按钮。那么这个 时候程序该怎么反应呢?这就看你的事件(或者说动作)有谁关心和谁关联。
②在实现上,c#是用委托做的,事件是一个特殊的委托。
...全文
331 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
小托尼 2013-10-25
  • 打赏
  • 举报
回复
其实就是委托。。安全的委托/多播委托
  • 打赏
  • 举报
回复
这个100个人结婚非委托的需要排队到民政局自己去填表,委托变成了你注册打个电话,民政局的上门找到结婚的人填表,这个形容很吊
stormier 2013-10-24
  • 打赏
  • 举报
回复
引用 2 楼 biind 的回复:
没有委托,就没有事件。事件,是委托的变量。触发事件,就是执行委托的方法。
触发事件是触发执行委托的方法的方法吧?
threenewbee 2013-10-24
  • 打赏
  • 举报
回复
这些说法或许都有道理,但是都不足以让你搞清楚事件是什么。 好比和一个没有见过飞机的人解释什么是飞机,一个人说飞机是利用机翼的气压差提供升力的,一个人说飞机上有窗户还有座位,一个人说,飞机是铁做的。你觉得他们解释清楚飞机是什么了么? 其实事件很简单,它和方法是相反的。方法就是系统定义好了一个函数,你去调用。事件是你定义好了一个方法(事件处理函数),系统反过来调用你。
zmn0079 2013-10-24
  • 打赏
  • 举报
回复
后面两种对
biind 2013-10-24
  • 打赏
  • 举报
回复
没有委托,就没有事件。事件,是委托的变量。触发事件,就是执行委托的方法。
hawesome.xu 2013-10-24
  • 打赏
  • 举报
回复
知道怎么用,在什么场合用就行。简单的概念被绕晕了。
asia217 2013-10-24
  • 打赏
  • 举报
回复
4楼精辟,顶
与前版功能基本相似,修正了部分bug,对界面进行了美化,目前这个美化相信应该够用了,因为时间问题没有增加可自定义界面功能,等有时间再提供吧,压缩文件使用“好压”做的,里面有一个例子,图片资源编辑工具,大家可以测试一下效果,里面也有详细说明,图片资源编辑器大家也可以用到自己的程序中,方便程序的图片统一管理和调用,菜鸟,达人们别笑话我了。 这里还是在说一下等待窗体的具体使用方法吧 首先将LOADing.dll,DevComponents.DotNetBar2.dll两个dll文件复制到你程序目录中,在程序项目中引用LOADing.dll,在要使用的地方 //先实例 LOADing.FORMshow FRload = new LOADing.FORMshow(); //再调用showto方法,其中的参数this为你调用等待窗体的主窗体对象,delegate { }为委托,IMGclass_AddFlie_r()为功能处理函数,其中所传递的参数第一的FRload必须为固定的创建等待窗体的实例对象,后面跟所需要传递的对象参数。 FRload.showto(this, delegate { IMGclass_AddFlie_r(new object[] { FRload, iclass, fileDialog1.FileNames, _at.SelectedNode.Text }); },true); //这个为数据处理部分 private void IMGclass_AddFlie_r(object[] d) { for (int i = 0; i <= ((string[])d[2]).Length - 1; i++) { ((IMGclass)d[1]).top[d[3].ToString()].Add("标" + ((IMGclass)d[1]).top[d[3].ToString()].Count, BinToCmd(((string[])d[2])[i])); f_new_hand(new object[] { ((IMGclass)d[1]).top[d[3].ToString()], "标" + (((IMGclass)d[1]).top[d[3].ToString()].Count - 1) }); ((LOADing.FORMshow)d[0]).send("加载图片文件:", Convert.ToInt32((Convert.ToSingle(i) / (Convert.ToSingle(((string[])d[2]).Length) / Convert.ToSingle(100))))); } BinToclass(((IMGclass)d[1]), _path[_at.SelectedNode.Parent.Text]); } 好了,使用起来很简单,看看上面的例子就会了,如需索要源码或者要提问的话,请联系QQ76230454.

111,095

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧