当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: 导论 在学习C#中的委托和事件过程中,我读了许多文章来理解他们二者究竟是怎么一回事,以及如何使用他们,现在我将整个的理解过程陈述以下,我学到的每一方面,恐怕也是你们需要掌握的 :-)。
 

 

 ·柱形图和折线图饼形图控件    »显示摘要«
    摘要: using system;using system.collections;using system.componentmodel;using system.drawing;using system.data;using system.windows.forms;using system.xml ;namespace chartcontrol{ /// <summary&......
 ·session登陆后丢失的解决办法    »显示摘要«
    摘要: 最近做网站后台的时候,登陆后发现刷新页面时session会丢失,过几秒钟也会自然丢失,查了资料后发现可以这样解决:1。打开web.config文件,设置如下:<!-- 会话状态设置 默认情况下,asp.net 使用 cookie 来标识哪些请求属于特定的会话。 如果 cookie 不可用,则可以通过将会话标识符添加到 url 来跟踪会话。 若要禁用 cookie,请设置 ......


Introduceeventdelegate

    在学习c#中的委托与事件过程中,我读了许多文章来理解他们二者究竟是怎么一回事,以及如何使用他们,现在我将整个的理解过程陈述以下,我学到的每一方面,恐怕也是你们需要掌握的 :-). 【程序编程相关:一个Web文件上传的C#源代码

导论 【推荐阅读:VS2005Beta2安装几点经验和体会

    委托与事件这两个概念是完全配合的.委托仅仅是函数指针,那就是说,它能够引用函数,通过传递地址的机制完成.委托是一个类,当你对它实例化时,要提供一个引用函数,将其作为它构造函数的参数. 【扩展信息:利用C#线程机制实现应用程序的单实例运行

什么是委托?

  每一个委托都有自己的签名,例如:delegate int somedelegate(string s, bool b);是一个委托申明,在这里,提及的签名,就是说somedelegate 这个委托 有 string 与 bool 类型的形参,返回一个int 类型.

上面提及的:当你对委托实例化时,要提供一个引用函数,将其作为它构造函数的参数.这里要注意了:被引用的这个函数必须与委托有相同的签名.

看下面的函数:

private int somefunction(string str, bool bln){...}

你可以把这个函数传给somedelegate的构造函数,因为他们有相似的签名(in other words,他们都有相同的形参类型与个数,并且返回相同的数据类型).

    somedelegate sd = new somedelegate(somefunction);

  sd 引用了 somefunction,也就是说,somefunction已被sd所登记注册,如果你调用 sd,somefunction 这个函数也会被调用,记住:我所说 somefunction的含义,后面,我们会用到它.

  现在,你应该知道如何使用委托了,让我们继续理解事件之旅……

事件的理解

 我们知道,在c#中:

l        按钮(button)就是一个类,当我们单击它时,就触发一次click事件.

l        时钟(timer)也是一个类,每过一毫秒,就触发一次tick事件.

让我们通过一个例子来学习,假定有这样的情节:

  现在有一个counter的类,它有一个方法 countto(int countto, int reachablenum),该方法表示:在指定的时间段内(0~~countto),当到达指定的时间点reachablenum时,就触发一次numberreached事件.

它还有一个事件:numberreached,事件是委托类型的变量.意思是:如果给事件命名,用event关键字与要使用的委托类型申明它即可,如下所示:

public event numberreachedeventhandler numberreached;

 

在上面的申明中,numberreachedeventhandle 仅是一个委托,更确切的表示应该是:numberreacheddelegate.但是微软从不这样认为mousedelegate或者paintdelegate,,而是称谓:mouseeventhandler 或者 painteventhandler.所以

numberreachedeventhandler 比numberreacheddelegate听起来更方便一些,ok?好了,让我们继续,现在你知道了,在我们声明事件之前,需要象下面这样的形式来定义委托:

public delegate void numberreachedeventhandler(object sender, numberreachedeventargs e);

现在声明的委托 numberreachedeventhandle,它有一个void 返回值,与object,numberreachedeventargs两个形参.就像我们在第一节中强调的那样,当实例化委托时,作为实参传入的函数也必须拥有与委托同样的签名.

 在你的代码中, 你是否用过painteventargs 或者 mouseeventargs来确定鼠标的移动位置?是否在触发paint事件的对象中用过graphics 属性?实际上,为用户提供数据的类都是继承于system.eventargs类,就是我们常说的事件参数类,如果事件不提供参数,就不定义该类.在我们的例子中,我们通过下面的类提供预期的时间点.
...   下一页
    摘要: 这是一篇关于使用可重用代码绑定ado数据到控件的文章。介绍ado是一种功能非常强大的从数据库中读取数据的技术,但是它也使人很容易搞糊涂,连接数据到datagrid或其他控件需要一些技巧和连接方法。我使用的方法是开发标准化的可重用代码访问数据库和显示数据。我已经写了很多通过sql语句在datagrid中显示结果的asp.net页面。这篇文章将要描述我是怎样使用可重用代码连接ado......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE