时间: 2021-07-31 作者:daque
3.c#中预订义事变处置办法 进修事变,我感触最不好领会的即是c#中预订义了事变,使我才发端进修事变时一头雾水。在查了些材料后,毕竟弄领会了少许,如次: eventargs是包括事变数据的类的基类,用来传播事变的详细。 eventhandler是一个委派证明如次(其在.net类库中如次证明的) public delegate void eventhandler( object sender , eventargs e ) 以是,一切形如: void 函娄名(object 参数名,eventargs 参数名); 的因变量都不妨动作control类的click事变相应本领了。如底下所设置的一个事变相应本领: private void button1_click(object sender, system.eventargs e) 参数object sender表白激励事变的东西,(本来这边传播的是东西的援用,即使是button1的click事变则sender即是button1)system.eventargs e 代办事变的相映消息,如鼠目标x,y值等。 底下咱们接洽一下button类看看个中的事变证明,以click事变为例。 public event eventhandler click; 这边设置了一个eventhandler典型的事变click private void button1_click(object sender, system.eventargs e) { ... } 这是咱们和button1_click事变所对应的本领。提防本领的参数适合委派中的出面(既参数列表)。那咱们如何把这个本领和事变接洽起来呢,请看底下的代码。 this.button1.click += new system.eventhandler(this.button1_click); (本来button1.click 为system.eventhandler萎任的范例事变。与萎任中萎任范例委派给某一本领特殊一致) 把this.button1_click本领绑定到this.button1.click事变。 4.事变的参数的运用。 using system; class class1 { static void main() { student s1=new student(); s1.name ="student1"; student s2=new student(); s2.name ="student2"; s1.registerok +=new student.delegateregisterokevent(student_registerok); s2.registerok +=new student.delegateregisterokevent(student_registerok); //当register本领一实行,触发registerok事变 //registerok事变一触发,而后实行student_registerok本领 s1.register(); s2.register(); console.readline(); } static void student_registerok(registerokargs e) { console.writeline(e.eventinfo); } } class student { public delegate void delegateregisterokevent(registerokargs e); public event delegateregisterokevent registerok; public string name; public void register() { console.writeline("register method"); registerok(new registerokargs("student name: "+name)); } } class registerokargs:eventargs { public string eventinfo; public registerokargs(string eventinfo):base() { this.eventinfo =eventinfo; } }