麻烦各位高手Help help 我!
看书上讲的委托的例子我也可以理解。
比如:经理和员工,经理要监视员工是否玩游戏。如果员工开始玩游戏就会触发事件PlayGame,然后通知经理。这个事件触发是我在代码里调用Game()的。
但是联想到button就搞不懂了,为什么鼠标单击一下按钮就会触发click事件呢?这边的鼠标单击相当于我调用Game()吗?

解决方案 »

  1.   

    button1.ClickButton的Click(成员)事件 += New EventHandler(FunctionName)public event EventHandler Click
      

  2.   

    没搞懂,我的意思是button多了个鼠标(硬件)单击这个动作在里面,我就不懂了。
      

  3.   

    这就好比系统要监视你是否点击button阿,如果你点击button,就触发事件button_click,然后通知系统。经理对应系统,你对应员工,玩游戏对应点击button。
      

  4.   

    button和游戏都是对象阿,点击button和玩游戏这两个操作才会触发对象~~
      

  5.   

    看看这篇文章:http://www.tracefact.net/CSharp-Programming/Delegates-and-Events-in-CSharp.aspx
      

  6.   

    这个是比较难理解的,当时我也想了很长时间,其实整个流程是这样的,当鼠标点击的时候,Button的PerformClick()方法会被调用,在这个方法里面Onclick的事件才会被调用,而Onclick上注册的方法是form里面的,所以就会执行form里面的方法啦。这样想的话就和雇员经理一样啦
      

  7.   

    其实很多时候我们觉得迷惑的就是,不知道Onclick事件是在performclick方法里面用到的,因为我们没办法去读Button的源代码,个人的理解就是这些,希望能够帮到你
      

  8.   

    你如果把触发事件PlayGame()写在button1.Click 事件中,鼠标单击相当于调用Game()。或者PlayGame()是一个单独的事件,然后在button1.Click 事件中调用。
      

  9.   


    鼠标点击的时候button会接收到系统发送的鼠标点击消息,然后触发click事件
      

  10.   

    本质上,窗口有一个消息循环,当鼠标点击按钮的时候,windows就会发一个消息给窗口,窗口接收到之后,如果发现点击这个消息就会调用click这个个委托。
    这个委托的调用是.NET封装好了的,你看不到而已。
      

  11.   

    俺也是新手,讲讲自己的理解。你说的后一个,点击鼠标触发按钮响应的这个,这个过程该是操作系统拦截到鼠标的坐标范围在button的显示范围内,并且鼠标的左键单击这些消息后,把响应的参数传递给应用程序进程,调用应用程序的处理函数。
    对按钮类来说,它本身提供了clik事件代理,也就是在应用程序告诉这个button它被单击了,它该做什么事。简单地说,就是做button类的人,自己写了些东西让它在自己被单击后执行,比如style的变化拉(按钮显示出被按下又弹起的效果),做一些其他我们看不见的操作后,顺带帮你做一些事情。但是写这个类的时候并不知道以后会做哪些事情,就提供了一个代理,用于给用户加入实际需要做的事情。大家多多指正~
      

  12.   

    这个是比较难理解的,当时我也想了很长时间,其实整个流程是这样的,当鼠标点击的时候,Button的PerformClick()方法会被调用,在这个方法里面Onclick的事件才会被调用,而Onclick上注册的方法是form里面的,所以就会执行form里面的方法啦。
    好像有那么一点点感觉了!过会结贴,让我再理解理解。
      

  13.   

    好了,谢谢大家了,上面的链接地址的那篇文章好的很啊。虽然没让我理解button的问题,但是让我加深了多委托和事件的理解。结贴·······
      

  14.   


    鼠标单击->生成硬件中断->Windows接受中断,生成消息放入对应窗口的消息队列->窗口有消息循环处理过程,读取消息->调用button的Click事件这些底层的东西在.NET里都被隔离了。