事件和代理怎么这么绕人啊?谁知道怎么学啊 ? hehe 你知道事件和代理就已经不错了 down code in codeproject 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 学好事件和代理对遍好程序帮助大吗? vs.net已经帮我们写好了啊! 代理相当于是一个函数的地址,事件是window内的消息引发的,从这里就可以知道,当一个window消息产生时会引发一系统的事件,在这些事件中可能会调用一些程序员写的函数,这里的函数应用一个代理(也就是指向一个函数的一个指针)来实现,我的说法可能不标准,但可以帮你理解一下这两个东西:) 比如有如下的定义://定义一个代理class MyControl{public delegate void DelegateOnUserClick(object sender);//用这个代理声明一个事件public event DelegateOnUserClick OnUserClick;......if (OnUserClick!=null){ //引发这个事件并调用用户在使用的时定义一个和这个代理相似的一个函数; OnUserClick(this);}......}MyControl c = new MyControl();c.OnUserClick+=new DelegateOnUserClick(this.AAA);//真正要调用的程序员写的函数private void AAA(object sender ){} 同感,那本.net框架应用上讲的不错。关键是事件机制,。net framework封装了实现细节。你可以用idasm察看相应的事件代码。 看一下李建维的那本.net框架应用。 既然绕人就不要去想了,你明白这样一个道理就行了(管它什么代理和事件,反正和我下面说的是同一个意思):当点了一下鼠标左键,会产生一个click事件,产生后总要一个函数来响应这一事件吧,我们将响应click的过程叫代理.嘿嘿,这样说可能不科学,但大致是这个意思,你在窗体上添加一个按钮,假如为btnOK,双击后会自动添加一个private void btnOK_Click(object sender, System.EventArgs e)之类的函数(或者叫方法),你再展开系统自动生成的代码,会找到一个类似:this.btnOK.Click += new System.EventHandler(this.btnOK_Click);你就认为这个过程就是代理吧. namespace ConsoleTest{ delegate void delegate1(string str); delegate void delegate2(int dd); class ZZConsole { [STAThread] static void Main(string[] args) { delegate1 d1= new delegate1(StrMethod); delegate2 d2= new delegate2(IntMethod); d1("代理包装字符串方法"); d2(111111); Console.ReadLine(); } public static void StrMethod(string str) { Console.WriteLine(str); } public static void IntMethod(int dd) { Console.WriteLine(dd.ToString()); } }} 事件使用http://www.csdn.net/Develop/read_article.asp?id=26270 在windows中消息机制和事件驱动,我觉得事件委托时以后的操作系统和编程语言的升级,撇开消息机制提供事件链,委托就是事件链提供的接口 在事件处理机制上面的可理解性C#比JAVA差多了,我学JAVA的时候看一遍就弄懂了,学C#到现在还有点迷糊,不过懂不懂好象也不太要紧,但总是心里有点不塌实。 通过c#代码怎么获取本机都安装了哪些浏览器呢? visual studio 2010中调试出现的问题 高分求解:提示:连接未关闭。连接的当前状态为已打开 谁知道加密狗怎么用的 50分求个copy文件夹类 C#如何实现 TEXTBOX不能输入汉字? IE中调用c#写的dll文件碰到安全限制! 如何连接远程服务器啊?(Oracle,数据库不在本地机器上,在服务器上) C# API GetUserNName? 一个百思不得其解的问题,大家来看看! 能不能让任务栏闪烁呀? 突然觉得C#,封装得太吓人了,完全有种人为逻辑的感觉,很多东西,规则都太离散了!
//定义一个代理
class MyControl
{
public delegate void DelegateOnUserClick(object sender);
//用这个代理声明一个事件
public event DelegateOnUserClick OnUserClick;......if (OnUserClick!=null)
{
//引发这个事件并调用用户在使用的时定义一个和这个代理相似的一个函数;
OnUserClick(this);
}
......
}MyControl c = new MyControl();
c.OnUserClick+=new DelegateOnUserClick(this.AAA);//真正要调用的程序员写的函数
private void AAA(object sender )
{}
当点了一下鼠标左键,会产生一个click事件,产生后总要一个函数来响应这一事件吧,我们将响应click的过程叫代理.嘿嘿,这样说可能不科学,但大致是这个意思,你在窗体上添加一个按钮,假如为btnOK,双击后会自动添加一个private void btnOK_Click(object sender, System.EventArgs e)之类的函数(或者叫方法),你再展开系统自动生成的代码,会找到一个类似:this.btnOK.Click += new System.EventHandler(this.btnOK_Click);你就认为这个过程就是代理吧.
{
delegate void delegate1(string str);
delegate void delegate2(int dd);
class ZZConsole
{
[STAThread]
static void Main(string[] args)
{
delegate1 d1= new delegate1(StrMethod);
delegate2 d2= new delegate2(IntMethod);
d1("代理包装字符串方法");
d2(111111);
Console.ReadLine();
}
public static void StrMethod(string str)
{
Console.WriteLine(str);
}
public static void IntMethod(int dd)
{
Console.WriteLine(dd.ToString());
} }
}
http://www.csdn.net/Develop/read_article.asp?id=26270