zoukankan      html  css  js  c++  java
  • 委托和事件的使用

    自定义类:webcyz 包括[属性,虚方法,事件,自定义委托]

    webcyz的派生类:重载了虚方法,截获事件触发,提前完成自定义代码.

    其中事件参数 类:EventArgs //所有事件参数类的基类.

    //代码
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace 委托
    {

        
    class webcyz
        {
            
    /// <summary>
            
    /// 定义一个私有的字符串.
            
    /// </summary>
            private string _text = "";
            
            
    /// <summary>
            
    /// 定义一个字符串属性Text.(访问属性为:public)
            
    /// </summary>
            public string Text
            {
                
    get { return _text; }
                
    set 
                {
                    _text 
    = value;
                    
    this.OnTextChange(new EventArgs());
                }
            }

            
    /// <summary>
            
    /// 定义一个委托类型,用于调度字符串Text变化后方法调用的机制
            
    /// </summary>
            
    /// <param name="sender">调用者</param>
            
    /// <param name="e">事件参数</param>
            public delegate void my_del_for_change_text(object sender, EventArgs e);


            
            
    /// <summary>
            
    /// 用委托声明一个事件
            
    /// </summary>
            public event my_del_for_change_text Changed;

            
    /// <summary>
            
    /// 定义一个虚方法,用于触发事件.
            
    /// </summary>
            
    /// <param name="e">传递事件参数e</param>
            public virtual void OnTextChange(EventArgs e)
            {
                
    if (Changed != null)
                {
                    
    this.Changed(this, e); 
                }
            }



        }
        
        
        
    class Program
        {
            
    /// <summary>
            
    /// 定义webcyz的派生类.
            
    /// </summary>
            class MyClass:webcyz
            {
                
    /// <summary>
                
    /// 重载了虚方法,从而截获事件的调用.
                
    /// </summary>
                
    /// <param name="e"></param>
                public override void OnTextChange(EventArgs e)
                {
                    System.Windows.Forms.MessageBox.Show(
    "虚函数重载");
                    
    base.OnTextChange(e);
                }
            }

            
    static void Main(string[] args)
            {
                MyClass test 
    = new MyClass();//实例化一个自定义类的子类实例.
                test.Changed += new webcyz.my_del_for_change_text(test_Changed);//给事件绑定方法.
                test.Text = "1";//改变数据.测试触发事件.
                Console.WriteLine(test.Text);//显示对象的Text属性值.
                Console.ReadKey();

            }

            
    static void test_Changed(object sender, EventArgs e)
            {
                System.Windows.Forms.MessageBox.Show(
    "事件的处理");
                
    //throw new NotImplementedException();
            }

            

        }
    }
  • 相关阅读:
    windows7 下 apache2.4 和 php5.5 及 mysql5.6 的安装与配置
    JavaScript高级编程 (1)
    关于解决乱码问题的一点探索之二(涉及Unicode(utf-16)和GBK)
    关于解决乱码问题的一点探索之一(涉及utf-8和GBK)
    Windows上安装、配置MySQL的常见问题
    解析DXF图形文件格式
    vue三十一:vue配置反向代理
    vue三十:eslint修复错误和打包用于生产
    vue二十九:多个文件组件集成
    vue二十八:Vue-Cli之环境搭建之node安装脚手架和使用脚手架创建vue项目
  • 原文地址:https://www.cnblogs.com/webcyz/p/1941595.html
Copyright © 2011-2022 走看看