zoukankan      html  css  js  c++  java
  • C#事件

    C#事件:介绍委托和事件

     分别介绍:

     1:事件是特殊化的委托,委托是事件的基础。

         委托:使用委托可以将方法应用(不是方法)封装在委托对象内,然后将委托对象 传递给调用方法的代码,这样编译的时候代码就没有必要知道调用哪个方法。通过 使用委托程序能够在运行时动态的调用不供的方法。

                 C# 中的委托(Delegate)类似于 C 或 C++ 中函数的指针。委托(Delegate) 是存有对某个方法的引用的一种引用类型变量。引用可在运行时被改变。

    委托(Delegate)特别用于实现事件和回调方法。所有的委托(Delegate)都派生自 System.Delegate 类。

         事件:事件是对象发送的消息,发送信号通知客户发生了操作。这个操作可能是由 鼠标单击引起的,也可能是由某些其他的程序逻辑触发的。事件的发送方不需要知 道那个对象或者方法接收它引发的事件,发送方只需知道在它和接收方之间存在的 中介(Deletgate)

    2:在GUI图形界面中的事件(单击按钮或者选择菜单等)是已经定义好的事件,所需要 的就是注册事件。我们也可以自己定义声明事件,可以将自己定义的事件应用到程 序的任何地方。事件和委托是分不开的,c# 中使用委托来声明事件。 如果在类里面声明事件,那么必须先声明该事件的委托类型,也可以使用一个事先 已经声明好的委托类型

    using System;
    namespace SimpleEvent
    {
       using System;
    
       public class EventTest
       {
          private int value;
    
          public delegate void NumManipulationHandler();   //委托
    
          public event NumManipulationHandler ChangeNum;   //由委托定义事件
    
          protected virtual void OnNumChanged()
          {
             if (ChangeNum != null)   
             {
                ChangeNum();
             }
             else
             {
                Console.WriteLine("Event fired!");
             }
    
          }
          public EventTest(int n )
          {
             SetValue(n);
          }
          public void SetValue(int n)
          {
             if (value != n)
             {
                value = n;
                OnNumChanged();
             }
          }
       }
       public class MainClass
       {
          public static void Main()
          {
             EventTest e = new EventTest(5);
             e.SetValue(7);
             e.SetValue(11);
             Console.ReadKey();
          }
       }
    }

    结果:

    Event Fired!
    Event Fired!
    Event Fired!

  • 相关阅读:
    asp.net 对母版页的控件事件
    treeview操作集合
    使用GAppProxy时安全证书无效的解决办法
    向Excel模板中添加数据
    C# 重写 winform 关闭按钮
    完整ASP.Net Excel导入程序(支持2007)
    随笔二则
    标记枚举(flags)的使用
    System.Reflection.Missing.Value与Type.Missing
    Windows下Android源码下载方法
  • 原文地址:https://www.cnblogs.com/2714585551summer/p/5324335.html
Copyright © 2011-2022 走看看