c#中的事件和委托
来源:互联网 发布:平安数据分析岗位职责 编辑:程序博客网 时间:2024/06/06 00:54
关于事件和委托一开始我也搞不明白到底咋回事。
我在平常使用到的有:
1、delegate
a、这据说是委托,当用线程改变主界面的控件或什么的,就要用到这个,首先定义一个委托,加到主界面的方法中
delegate void Delegate(类型 参数);private void main(类型 参数){ if (!this.InvokeRequired){ 执行方法}else{ this.Invoke(new Delegate(main), new object[] {参数...});}}
b、delegate另一种用法,就是在另一个类中或界面里,要给主界面传值并执行方法。
主界面中定义delegate,
private delegate void Delegatem(类型 参数); private Delegatem method(类型 参数);private void exemethod(类型 参数){}
然后 把主界面的呢方法加到刚才定义的委托上:
method= new Delegatem(exemethod);
当初始化另一个类时,就把刚才那个method传到另一个类里面。
在另一个类里使用时
void othermethod(类型 参数) { main.Invoke(method, new Object[]{参数}); }
main 是主界面。
2、EventHandler事件
其实我一直不明白到底这是不是事件,用法是:
类A:
public class A{ private 类B b;private voi main(){ b.eventtest1+=new EventHandler(method);if(b.eventtest2!=null) b. eventtest2+= new EventHandler(method);}private voi method(){}}
类B:
public class B{ public event EventHandler eventtest1; public EventHandler eventtest2;}
大概用法就是这样,当让EventHandler <类型>可以定义类型,以便传参数。
之后做了几个项目,研究了c#编程,也看了很多别人对事件委托的解释。我理解的是事件是一个过程,就是一个主题受到了某种条件激发了另一个主题里的一个动作,让这个动作运行了。这个过程便是事件,它必须有两个主题,即事件激发者和事件接受者。那么这个过程怎么实现呢,时间激发者怎么去激发事件接受者呢,它们的中介就是委托。不比如按钮添加一个Click事件,button.Click+= new System.EventHandler(方法);这里的System.EventHandler就是一个委托,通过它完成了事件。当然System.EventHandler我们也可以自己写,比如用我们自己的委托
public class MyButtonEvent : EventArgs { private string name; public MyButtonEvent(string buttonName) { this.name = buttonName; } public string Name { get { return name; } } }
这样,button.Click+= new MyButtonEvent (方法);就可以通过自己写的委托传button的名字过去,或者其它的相传的东西,只需改动MyButtonEvent就可以。
而delegate是委托,它可以关联某个函数,使得你引用了它就引用了那个函数,实际起到的是代理的作用。而EventArgs表示的是包含事件的细节,通俗来说就是事件要用的数据。EventArgs其实就是一个委托的声明。还是那句话,事件通过委托完成的。
- C#中的委托和事件
- C# 中的委托和事件
- C# 中的委托和事件
- C# 中的委托和事件
- C# 中的委托和事件
- C# 中的委托和事件
- C# 中的委托和事件
- C#中的委托和事件
- C# 中的委托和事件
- C# 中的委托和事件
- C# 中的委托和事件
- c#中的委托和事件
- C#中的委托和事件
- C# 中的委托和事件
- C# 中的委托和事件
- C# 中的委托和事件
- C# 中的委托和事件
- C# 中的委托和事件
- 数组和List 之间相互转换的方法
- android GPS JAVA 获取GPS功能是否禁用
- Android的XML文件名不可以出现大写。
- 使用EventWaitHandleSecurity进行程序间同步时,在非英语机器上程序hang住了。
- 创新只是个笑话
- c#中的事件和委托
- 最近oracle使用过程中的一些总结
- Sphinx-for-chinese (中文全文搜索)安装步骤
- 音乐播放
- 《AIX 5L系统管理技术》第一章——第四章 笔记
- SubEclipse入门学习指南
- 排序算法 Sleep Sort
- 备忘录:java,servlet生成条形码
- JTable中 表头中添加 JCheckBox 全选 反向选择 功能