• C# 事件委托


    事件委托
    事件概述
    事件就是当对象或类状态发生改变时,对象或类发出的信息或通知。发出信息的对象或类称为"事件源",对事件进行处理的方法称为"接收者",通常事件源在发出状态改变信息时,它
    并不知道由哪个事件接收者来处理.这就需要一种管理机制来协调事件源和接收者,C++中通过函数指针来完成的.在C#中事件使用委托来为触发时将调用的方法提供类型安全的封装
    事件的声明
    1.声明一个委托 public delegate void EventHandler(object sender, System.EventArgs e);
    2.声明一个事件 public event EventHandler Changed;
    3.引发一个事件 public OnChanged(EnventArgs e) { if ( Changed != null) {   Changed(this,e); } }
    4.定义事件处理程序 public MyText_OnChanged(Object sender,EventArgs e) { ... }
    5.订阅事件(将事件处理程序添加到事件的调用列表中)
    myText.Changed += EventHandler(MyText_OnChanged);
    下面的一个小例子说明了怎样定义一个完整的事件机制:

    C# code

    事件委托
    事件概述
    事件就是当对象或类状态发生改变时,对象或类发出的信息或通知。发出信息的对象或类称为"事件源",对事件进行处理的方法称为"接收者",通常事件源在发出状态改变信息时,它
    并不知道由哪个事件接收者来处理.这就需要一种管理机制来协调事件源和接收者,C++中通过函数指针来完成的.在C#中事件使用委托来为触发时将调用的方法提供类型安全的封装
    事件的声明
    1.声明一个委托 public delegate void EventHandler(object sender, System.EventArgs e);
    2.声明一个事件 public event EventHandler Changed;
    3.引发一个事件 public OnChanged(EnventArgs e) { if ( Changed != null) {   Changed(this,e); } }
    4.定义事件处理程序 public MyText_OnChanged(Object sender,EventArgs e) { ... }
    5.订阅事件(将事件处理程序添加到事件的调用列表中)
    myText.Changed += EventHandler(MyText_OnChanged);
    下面的一个小例子说明了怎样定义一个完整的事件机制:

    C# code
    事件委托
    
    事件概述
    
    事件就是当对象或类状态发生改变时,对象或类发出的信息或通知。发出信息的对象或类称为"事件源",对事件进行处理的方法称为"接收者",通常事件源在发出状态改变信息时,它
    
    并不知道由哪个事件接收者来处理.这就需要一种管理机制来协调事件源和接收者,C++中通过函数指针来完成的.在C#中事件使用委托来为触发时将调用的方法提供类型安全的封装
    
    
    事件的声明
    
    1.声明一个委托
    public delegate void EventHandler(object sender, System.EventArgs e);
    
    2.声明一个事件
    public event EventHandler Changed;
    
    3.引发一个事件
    public OnChanged(EnventArgs e)
    {
     if ( Changed != null)
     {
      Changed(this,e);
     }
    }
    
    4.定义事件处理程序
    public MyText_OnChanged(Object sender,EventArgs e)
    {
     ...
    }
    
    5.订阅事件(将事件处理程序添加到事件的调用列表中)
    
    myText.Changed += EventHandler(MyText_OnChanged);
    
    下面的一个小例子说明了怎样定义一个完整的事件机制:
    
     C# code 
    using System;
    using System.Collections.Generic;
    using System.Text;
    
    namespace ConsoleApplication1
    {
        class Program
        {       
            static void Main(string[] args)
            {             
                MyText myText = new MyText();
    
                // 将事件处理程序添加到事件的调用列表中(即事件布线)
                myText.Changed += new MyText.ChangedEventHandler(myText_Changed);        
               
                string str = "";
                while (str != "quit")
                {
                    Console.WriteLine("please enter a string:");
                    str = Console.ReadLine();
                    myText.Text = str;
                }
            }
    
            // 对Change事件处理的程序
            private static void myText_Changed(object sender, EventArgs e)
            {
                Console.WriteLine("text has been changed  :{0}\n" ,((MyText)sender).Text);
            }       
        } 
    
        public class MyText
        {
            private string _text = "";
    
            // 定义事件的委托
            public delegate void ChangedEventHandler(object sender, EventArgs e);
    
            // 定义一个事件
            public event ChangedEventHandler Changed;
    
            // 用以触发Change事件
            protected virtual void OnChanged(EventArgs e)
            {
                if (this.Changed != null)
                    this.Changed(this, e);
            }
    
            // Text属性
            public string Text
            {
                get { return this._text; }
                set
                {
                    this._text = value;
                    // 文本改变时触发Change事件
                    this.OnChanged(new EventArgs());
                }
            }
        }
    }   
    待人以诚,做事用心,对事不对人.
  • 相关阅读:
    hdoj_1556Color the ball
    wchar_t与char转换(总结)
    算法艺术——网络最大流
    poj_3268Silver Cow Party
    poj_2352Stars
    BellmanFord模板
    saas模式
    什么是管道
    什么是CMMI
    saas模式
  • 原文地址:https://www.cnblogs.com/jiangguang/p/2761089.html
Copyright © 2020-2023  润新知