1.事件的素质是什么
答:事件是委托的包装器,就像属性是字段的包装器一样
2.为什么有了委托还有有事件
委托可以被访谒就可以被执行,事件则只能在类的内部执行
3.事件要怎么声明
a.明一个委托
//委托用于事件,约定以EventHandle结束 ,参数一般要有一个事件拥有者,和一个事件参数 ,这三者是同级的关系,所以三个类访谒级别要一致
//为什么说三者呢,因为委托虽然写法对照怪,但也是一个类
public delegate void DelegateNameEventHandle(IHaveEvent obj,EventArgs e);
b.声明委托的参数类
//事件参数类要记得承继EventArgs这个系统的基类 public class DelegateNameEvenArgs:EventArgs { public int p1 { get; set; } }
c.声明拥有些事件的类
public class IHaveEvent { //简化的声明 public event DelegateNameEventHandle MySimpleEvent; //完整的声明 private DelegateNameEventHandle delegateNameEventHandle; public event DelegateNameEventHandle MyFullEvent { add { delegateNameEventHandle += value; } remove { delegateNameEventHandle -= value; } } }
4. .net 框架已经有一个 默认的 事件委托了 一般直接用就可以 不必本身声明
// // 摘要: // 暗示将用于措置惩罚惩罚不具有事件数据的事件的要领。 // // 参数: // sender: // 事件源。 // // e: // 不包罗事件数据的东西。 [ComVisible(true)] public delegate void EventHandler(object sender, EventArgs e);
5.既然事件只能由拥有者来执行,一般是如何操纵的呢
//1 执行事件要领的访谒级别不要让外部可以访谒到,设成protected 此类的派生类也能访谒 2 约定执行事件的要领定名on+事件名 protected void onEvnt(EventArgs e) { if (delegateNameEventHandle != null) { delegateNameEventHandle(this, e ); } }
,