委托和事件
2011-12-11 23:05
141 查看
public delegate void EventHandler(object sender, EventArgs e);//定义一个委托EventHandler.在system命名空间下。注意:System.EventHandler不是一个类,而是一个委托的定义,也就是委托的方法名 public event EventHandler Click //定义一个事件,类型是刚才定义的委托EventHandler
this.button1.Click += new System.EventHandler(this.button1_Click);//用+=订阅事件.这里的button_click是一个方法名//实际调用的方法,它的参数个数,参数类型要和委托的参数个数,和类型一致。private void button1_Click(object sender, EventArgs e){}
委托是一种类型,委托的类是System.Delegate
String是种类型,String的类是System.String
定义一个String类型变量: public string str //string类型变量str
申明一个Delegate类型变量 public delegate int GetSumFun(int x,int y) //int GetSumFun(int x,int y)是一个整体,一个返回类型为int型,2个参数的方法,封装了一个返回类型为int型的方法GetSumFun
<pre class="csharp" name="code">namespace DelegateDemo{ public delegate double Calculation(int x, int y);//申明一个委托Calculation,封装了一个返回值为double,2个参数的方法Calculation,方法名Calculation就是委托的名称 //委托和类是同一单位对象,通过实例化调用 class Program { static void Main(string[]
args) { double result = 0; Calculation delegateC = new Calculation(SumFun);//实例化。创建一个委托实例,把SumFun方法作为参数传给委托,封装方法 //重新给委托传递参数,方法名;重新封装方法 delegateC = new Calculation(AverageFun); result=delegateC(10,
20); Console.WriteLine(result); } static double SumFun(int num1, int num2) { return num1 + num2; } static double AverageFun(int num1, int num2) { return (num1 + num2) / 2; } }}
using System;using System.Collections.Generic;using System.Linq;using System.Text;
namespace Demo{ class DaYingJi { public void Stop() { Console.WriteLine("打印机关闭了!"); } } class HanJieJi { public void Stop() { Console.WriteLine("焊接机关闭了!"); } } class SaoMiaoYi
{ public void Stop() { Console.WriteLine("扫描仪关闭了!"); } } public class Controller { public delegate void StopControl(); public StopControl stopC; DaYingJi dyj = new DaYingJi(); HanJieJi hjj
= new HanJieJi(); SaoMiaoYi smy = new SaoMiaoYi(); public Controller() { this.stopC += dyj.Stop; stopC += hjj.Stop; stopC += smy.Stop; } //static void Main(string[] args) { // Controller
control = new Controller(); // control.stopC();//直接调用委托的所有方法,把委托的方法名作为方法名调用 //} }}
事件:< <pre class="csharp" name="code">
using System;using System.Collections.Generic;using System.Linq;using System.Text;
namespace Demo{ public class Test { public delegate string GetStrDelegate(string str1,string str2);//申明委托 public GetStrDelegate objDelegate; public Test() { objDelegate += fun1; objDelegate += fun2;
} string fun1(string str1, string str2) { return str1 + str2; } string fun2(string str1, string str2) { return str1 + str2; } //static void Main(string[] args) { // string
s = new Test().objDelegate("张", "三丰");//通过委托的对象调用 // Console.WriteLine(s); // string s2 = new Test().GetStrFun("张", "三丰"); // Console.WriteLine(s); //} public string GetStrFun(string str1, string str2) {
return str1 + str2; } } public class EventDemo { public delegate string GetStrDelegate(string str1, string str2);//申明委托 public event GetStrDelegate objEvent;//申明事件,类型是上面定义的委托 事件就是委托的一个对象 //public GetStrDelegate objDelegate;
//事件就多一个event关键字,其他都一样 public EventDemo() { objEvent += fun1; objEvent += fun2; } string fun1(string str1, string str2) { return str1 + str2; } string fun2(string str1, string
str2) { return str1 + str2; } static void Main(string[] args) { string s= new EventDemo().objEvent("张", "三丰"); Console.WriteLine(s); } }}
</>< <pre class="csharp" name="code">
事件的类型是委托
从button的Click事件分析委托和事件:</>< class="csharp" name="code">public delegate void EventHandler(object sender, EventArgs e);//定义一个委托EventHandler.在system命名空间下。注意:System.EventHandler不是一个类,而是一个委托的定义,也就是委托的方法名</><
class="csharp" name="code">
</>< class="csharp" name="code"> </>< class="csharp" name="code">public event EventHandler Click //定义一个事件,类型是刚才定义的委托EventHandler</><
class="csharp" name="code"> </>< class="csharp" name="code">this.button1.Click += new System.EventHandler(this.button1_Click);//用+=订阅事件.这里的button_click是一个方法名</>< class="csharp" name="code">
</><
class="csharp" name="code">
//实际调用的方法,它的参数个数,参数类型要和委托的参数个数,和类型一致。
private void button1_Click(object sender, EventArgs e){
}
</>
this.button1.Click += new System.EventHandler(this.button1_Click);//用+=订阅事件.这里的button_click是一个方法名//实际调用的方法,它的参数个数,参数类型要和委托的参数个数,和类型一致。private void button1_Click(object sender, EventArgs e){}
委托是一种类型,委托的类是System.Delegate
String是种类型,String的类是System.String
定义一个String类型变量: public string str //string类型变量str
申明一个Delegate类型变量 public delegate int GetSumFun(int x,int y) //int GetSumFun(int x,int y)是一个整体,一个返回类型为int型,2个参数的方法,封装了一个返回类型为int型的方法GetSumFun
<pre class="csharp" name="code">namespace DelegateDemo{ public delegate double Calculation(int x, int y);//申明一个委托Calculation,封装了一个返回值为double,2个参数的方法Calculation,方法名Calculation就是委托的名称 //委托和类是同一单位对象,通过实例化调用 class Program { static void Main(string[]
args) { double result = 0; Calculation delegateC = new Calculation(SumFun);//实例化。创建一个委托实例,把SumFun方法作为参数传给委托,封装方法 //重新给委托传递参数,方法名;重新封装方法 delegateC = new Calculation(AverageFun); result=delegateC(10,
20); Console.WriteLine(result); } static double SumFun(int num1, int num2) { return num1 + num2; } static double AverageFun(int num1, int num2) { return (num1 + num2) / 2; } }}
using System;using System.Collections.Generic;using System.Linq;using System.Text;
namespace Demo{ class DaYingJi { public void Stop() { Console.WriteLine("打印机关闭了!"); } } class HanJieJi { public void Stop() { Console.WriteLine("焊接机关闭了!"); } } class SaoMiaoYi
{ public void Stop() { Console.WriteLine("扫描仪关闭了!"); } } public class Controller { public delegate void StopControl(); public StopControl stopC; DaYingJi dyj = new DaYingJi(); HanJieJi hjj
= new HanJieJi(); SaoMiaoYi smy = new SaoMiaoYi(); public Controller() { this.stopC += dyj.Stop; stopC += hjj.Stop; stopC += smy.Stop; } //static void Main(string[] args) { // Controller
control = new Controller(); // control.stopC();//直接调用委托的所有方法,把委托的方法名作为方法名调用 //} }}
事件:< <pre class="csharp" name="code">
using System;using System.Collections.Generic;using System.Linq;using System.Text;
namespace Demo{ public class Test { public delegate string GetStrDelegate(string str1,string str2);//申明委托 public GetStrDelegate objDelegate; public Test() { objDelegate += fun1; objDelegate += fun2;
} string fun1(string str1, string str2) { return str1 + str2; } string fun2(string str1, string str2) { return str1 + str2; } //static void Main(string[] args) { // string
s = new Test().objDelegate("张", "三丰");//通过委托的对象调用 // Console.WriteLine(s); // string s2 = new Test().GetStrFun("张", "三丰"); // Console.WriteLine(s); //} public string GetStrFun(string str1, string str2) {
return str1 + str2; } } public class EventDemo { public delegate string GetStrDelegate(string str1, string str2);//申明委托 public event GetStrDelegate objEvent;//申明事件,类型是上面定义的委托 事件就是委托的一个对象 //public GetStrDelegate objDelegate;
//事件就多一个event关键字,其他都一样 public EventDemo() { objEvent += fun1; objEvent += fun2; } string fun1(string str1, string str2) { return str1 + str2; } string fun2(string str1, string
str2) { return str1 + str2; } static void Main(string[] args) { string s= new EventDemo().objEvent("张", "三丰"); Console.WriteLine(s); } }}
</>< <pre class="csharp" name="code">
事件的类型是委托
从button的Click事件分析委托和事件:</>< class="csharp" name="code">public delegate void EventHandler(object sender, EventArgs e);//定义一个委托EventHandler.在system命名空间下。注意:System.EventHandler不是一个类,而是一个委托的定义,也就是委托的方法名</><
class="csharp" name="code">
</>< class="csharp" name="code"> </>< class="csharp" name="code">public event EventHandler Click //定义一个事件,类型是刚才定义的委托EventHandler</><
class="csharp" name="code"> </>< class="csharp" name="code">this.button1.Click += new System.EventHandler(this.button1_Click);//用+=订阅事件.这里的button_click是一个方法名</>< class="csharp" name="code">
</><
class="csharp" name="code">
//实际调用的方法,它的参数个数,参数类型要和委托的参数个数,和类型一致。
private void button1_Click(object sender, EventArgs e){
}
</>
相关文章推荐
- (C#)中断程序流程,处理事件(委托,事件,Lambda表达式)-1/3
- C#关于委托和事件(基础)
- C# 中的委托和事件
- 第一百七十一节,jQuery,高级事件,模拟操作,命名空间,事件委托,on、off 和 one
- (zz)从callback的角度来理解.NET/C# 中的 委托 (delegate)与 事件 (event)
- C# 中的委托和事件
- 很好的一篇关于C#事件与委托的文章
- 自定义委托,事件,参数的简单随笔
- C# 中的委托和事件的详解资料
- C#中委托和事件
- C# 中的委托和事件==》observer
- jquery学习随笔(模拟行为、事件委托)
- JS 事件绑定、事件监听、事件委托详细介绍
- 窗体参数传递---委托、事件
- 委托、事件和回调函数这3者之间到底是什么关系
- C#中委托与事件
- 用事件,委托做A窗体关闭B窗体刷新
- asp.net 事件与委托分析
- C#事件与委托的区别
- Observer设计模式中-委托事件-应用在消息在窗体上显示