关于自定义委托与system.eventhandler问题

问题描述

namespaceeventexc{publicpartialclassForm1:Form{publicdelegatevoidab(objectsender,EventArgse);publicForm1(){InitializeComponent();}privatevoidForm1_KeyDown(objectsender,KeyEventArgse){if(e.KeyValue==13){button1.Click+=newab(button1_Click);这一行换成button1.Click+=newEventHandler(button1_Click);就没了问题但我想问一下这是为什么,为什么自己定义的委托就出了问题了呢?为什么必须用eventhandler}}privatevoidbutton1_Click(objectsender,EventArgse){MessageBox.Show("pressenter");}}}

解决方案

解决方案二:
publiceventEventHandlerClick;click事件需要的是EventHandler类型
解决方案三:
你想自定义委托,你也要自定义事件啊你不能把button原有的事件挂到另一个自定义委托上去
解决方案四:

解决方案五:
C#是强类型语言你以为伪装一个参数签名一样的委托就可以了?~来一个类比publicclassTeacher{publicstringname;}publicclassStudent{publicstringname;}由于她们只有一个name所以你就认为她们是一样的?你在button1.Click的Click上面按一下F12你就会知道它定义的是EventHandler类型的委托所以你只能给他EventHandler类型的~

时间: 2024-12-25 09:14:11

关于自定义委托与system.eventhandler问题的相关文章

求教win8应用商店程序 无法将类型 system.eventhandler 隐式转换....

问题描述 privatevoidTextBlock_Loaded(objectsender,RoutedEventArgse){timers=newDispatcherTimer();timers.Interval=newTimeSpan(0,0,0,1);timers.Tick+=newEventHandler(timers_Tick);-------------->这里有问题timers.Start();}voidtimers_Tick(objectsender,EventArgse){Te

vent andler-问个 this.Invoke((EventHandler) delegate{/*委托内容*/})

问题描述 问个 this.Invoke((EventHandler) delegate{/*委托内容*/}) 这句话是卸载我看MSDN介绍说:EventHandler是表示将处理不包含事件数据的事件的方法,但我这里的委托内容是将获取的参数转为另一个参数,生成数据了.和EventHandler的官方说法矛盾啊?刚查了下,SerialDataReceivedEventArgs用于传递数据,但还是不理解this.Invoke((EventHandler) delegate{/*委托内容*/}) 这句话

asp.NET自定义服务器控件内部细节

如大家要转载,请保留本人的版权:/* *Description:asp.NET自定义服务器控件内部细节系列教程*Auther:崇崇-天真的好蓝 *MSN:chongchong2008@msn.com *Dates:2007-05-20*Copyright:ChongChong2008 YiChang HuBei China */ 关于自定义asp.NET自定义服务器控件文章和源码示例网上已经很多了,不过有些内部些节方面,让一些初次接触这方面技术的朋友难以理解,对服务器控件的方方面面也很疑惑.为此

浅析C#的事件处理和自定义事件

一.了解C#中的预定义事件处理机制 在写代码前我们先来熟悉.net框架中和事件有关的类和委托,了解C#中预定义事件的处理. EventArgs是包含事件数据的类的基类,用于传递事件的细节. EventHandler是一个委托声明如下 public delegate void EventHandler( object sender , EventArgs e ) 注意这里的参数,前者是一个对象(其实这里传递的是对象的引用,如果是button1的click事件则sender就是button1),后面

C#如何事件注册/委托用法问题

问题描述 C#如何事件注册/委托用法问题 在用事件注册和委托时,遇到了困惑.在button注册事件时,C#默认是这样的:this.button1.Click += new System.EventHandler(this.button1_Click);实际上这样也可以执行:this.button1.Click += this.button1_Click;那么这两种方法到底有什么区别? 为什么要加这个委托?在自定义委托和事件时,按Tab自动补齐时,有时出现下面两种格式的一种,怎么回事?Contro

艾伟_转载:把委托说透(3):委托与事件

在把委托说透(1)和(2)中,先后介绍了委托的语法和本质,本文重点介绍.NET中与委托息息相关的概念--事件.在此之前,首先需要补充(2)中遗漏的一部分内容,即C#在语法上对委托链的支持. C#编译器为委托类型提供了+=和-=两个操作符的重载,分别对应Delegate.Combine和Delegate.Remove方法,使用这两个操作符可以大大简化委托链的构造和移除. 好了,有了+=和-=,我们就可以开始今天的话题了. 什么是事件? 事件(event)是类型中的一种成员,定义了事件成员的类型允许

使用自定义的数据源进行DataGrid控件的数据绑定

datagrid|datagrid控件|数据|数据源 自定义的集合类/// <summary> /// Collection 的摘要说明. /// </summary> public class Collection : System.Collections.CollectionBase { public Collection() { for(int i = 0;i < 10;i++) { base.InnerList.Add(new Element(i,string.For

为DataGrid自定义分页添加自定义导航和分页信息

datagrid|分页 在上一篇文章中我讲到了对DataGrid实行自定义分页,这可以避免为了显示一页数据而获取整个数据记录集,从而提高分页效率,不过使用的导航还是DataGrid自带的数字连接或简单的上一页,下一页,而且看不到总页数.总记录数之类的信息.下面就为他增加我们所需要的部分. 先来看看修改后的分页显示,截图如下: (图一) 使用的数据源同上一篇文章(Asp.net中DataGrid控件的自定义分页)相同,都是访问Northwind库,为了独立开来这里还是把存储过程列了一下, CREA

C#中委托,事件理解入门

目录 l        导论 l        什么是委托 l        事件的理解 l        事件 关键字 l        最后     导论     在学习C#中的委托和事件过程中,我读了许多文章来理解他们二者究竟是怎么一回事,以及如何使用他们,现在我将整个的理解过程陈述以下,我学到的每一方面,恐怕也是你们需要掌握的 :-). 什么是委托?     委托和事件这两个概念是完全配合的.委托仅仅是函数指针,那就是说,它能够引用函数,通过传递地址的机制完成.委托是一个类,当你对它实例