对C#事件的一点疑问。

问题描述

比如我需要自定义一个控件。给这个控件添加相应事件,这个事件可能是点击,键入值,或者USB收到一段数据种种。publiceventEventHandler<MyEventClass>MyEvent;protectedvirtualvoidOnmyEvent(MyEventClasse){if(MyEvent!=null){MyEvent(this,e);}}

问题是,怎么区分我定义的事件是点击?键入值?还是USB插/拔,收到数据?

解决方案

解决方案二:
事件本身就是一个“含义”,它就是用来屏蔽低级的无关概念的。如果你需要具有业务逻辑含义的“点击、键入值、USB插、USB拔、收到数据”共5个事件,你为什么又多余地把时间浪费在MyEvent这样一个低级的“纯技术字眼”上呢?
解决方案三:
那么问题是,如何定义一个包含特定”含义“的事件?
解决方案四:
这个是由你触发方式确定的,你可以定义成两个事件,或者自定义EventArgs,包含参数用于指示这是哪种方式触发
解决方案五:
楼主别被事件搞晕了,就是一个委托前面加上event了,要区分不同的事件,可以多定义几个不同的事件,也可以在MyEventClass加个来源变量表示.

时间: 2024-09-25 02:52:26

对C#事件的一点疑问。的相关文章

汇编语言-汇编MOV的一点疑问!!!

问题描述 汇编MOV的一点疑问!!! DATA SEGMENT USE16 MES1 DB 'Please input:',0AH,0DH,'$' SD DB ? DATA ENDS 然后 MOV AH,1 INT 21H MOV SD,AL 然后就对SD进行操作了 想问下MOV的目的操作数可以是变量(SD)吗??不是只能是寄存器和存储器吗? 解决方案 MOV AH,1 INT 21H 是自动转入中断子程序的入口 通过上面两条指令,会把输入或者读取的字符放到AL中,所以是MOV SD,AL 解决

string-对getBytes()的一点疑问

问题描述 对getBytes()的一点疑问 我输入的程序是这样的 byte d[]=""你我他"".getBytes(); byte b[]=""hahaha"".getBytes(); System.out.println(""数组d的长度是(一个汉字占两个字节):""+d.length+""个字节""); String s=new String

重写-关于覆盖和返回的一点疑问

问题描述 关于覆盖和返回的一点疑问 public class TbShangpininfo { private String spmc; public String getSpmc(){ return spmc; } public String toString() { return getSpmc(); } } TbShangpininfo类重写了toString()方法, JComboBox sp=new JComboBox(); TbShangpininfo info=new TbShan

c语言-关于C语言编译C51单片机程序的一点疑问

问题描述 关于C语言编译C51单片机程序的一点疑问 1.为什么两段不相干的代码会互相影响 在主程序里有一段点亮发光二极管的代码,和一段计数器计数并在数码管上显示的代码.同时工作时,二极管正常点亮,数码管几秒才点亮一回,而且十位显示是闪烁一下就不显示了2.数码管显示时,位选和段选顺序不能改变吗?按照书上的方法是先段选再位选,但是点亮的数码管是本来不应该点亮的,段选和位选顺序换了之后就能正常显示了 解决方案 问题1)你所谓的同时工作是指led亮的同时数码管也在显示,是这样的吗?单片机跑的程序都是单线

局部变量-关于java内存垃圾回收的一点疑问

问题描述 关于java内存垃圾回收的一点疑问 class test{ void m(){ Object obj[]=new Object[1]; Object o = new Object(); obj[0]=o; o = null;//用不着 } } 很常见的一个例子,说最后Object对象都没有被释放,因为obj[0]还引用这个对象. 我的疑问是,既然局部变量在方法运行完,引用会被销毁,也就是说o不用被置为null,也会堆内存的Object对象也会被回收(符合回收的条件,不一定立即GC),那

初学者的一点疑问,汇编语言计算两个输入数字的和并输出

问题描述 初学者的一点疑问,汇编语言计算两个输入数字的和并输出 assume cs:code,ds:data data segment buf1 db 20 db ? db 20 dup(?) buf2 db 20 db ? db 20 dup(?) sh1 db "please input tow numbers$" sh2 db 0ah,0dh,"The first number is $" sh3 db 0ah,0dh,"The second num

javascript-document.createElement的一点疑问

问题描述 document.createElement的一点疑问 为了让IE6支持HTML5的新标签,有人使用了document.createElement()方法,但是这么做不是仅仅在内存中创建了这些对象吗,如何让IE6最终识别了这些新标签?document.createElement()方法不是创建元素节点吗?这与让IE6识别有什么关系? 解决方案 个人看法,你说的有道理,该方法并不会让ie6支持html5新标签,是没有效果的.有个很好用的js文件,html5shiv.js,专门用于解决ie

关于javascript闭包的一点疑问

问题描述 关于javascript闭包的一点疑问 闭包存储局部变量的机理是什么?它如何存储的?比如如下一个闭包 function test(){ var num = 10; return function(){ num++; return num; }; }; var n = test(); alert(n()); //返回11 alert(n()); //返回12,实现了累加 alert(n()); //继续累加 第二次alert(n())通过闭包实现了累加,但是这个局部变量num是如何存储在

关于《javascript 高级程序设计》里“稳妥构造函数模式“的一点疑问

问题描述 关于<javascript 高级程序设计>里"稳妥构造函数模式"的一点疑问 在<javascript 高级程序设计>第六章6.2.7提到"稳妥构造函数模式"的稳妥对象,指的是没有公共属性,而且其方法也不引用this 的对象,最适合在一些安全的环境中(这些环境中会禁止使用this 和new),或者在防止数据被其他应用程序(如Mashup程序)改动时使用.书中举例如下: function Person(name, age, job){