zoukankan      html  css  js  c++  java
  • C# 事件的简单例子

    事件的简单例子
    using System.Windows,Form;
    public class Form1:Form
    {
        public delegate void ActionEventHandler(object sender,ActionCancelEventArgs ev);//定义委托类型ActionEventHandler
        public static event ActionEventHandler Action;//定义事件
        
        BusEntity busEntity=new BusEntity();
        
        public Form()
        {
            InitializeComponent();
        }
        
        /*public void Form1_Load()
        {
            ActionCancelEventArgs e = new ActionCancelEventArgs();
            Action+=new ActionEventHandler(OnAction);//触发事件
        }*/
        
        public static void OnAction(object sender,ActionCancelEventArgs ev)
        {
            if(Action!=null)
            {
                Action(sender,ev);
            }
        }
        
        private void btnRaise_Click(object sender,EventAgrs e)
        {
            ActionCancelEventArgs cancelEvent=new ActionCancelEventArgs();
            OnAction(this,cancelEvent);
            if(cancelEvent.Cancel)
            {
                lblInfo.Text=cancelEvent.Message;
            }
            else
            {
                lblInfo.Text=busEntity.TimeString;
            }
        }
    }
    
    public class ActionCancelEventArgs:System.ComponentModel.CancelEventArgs
    {
        public string Message
        {get;set;}
        public ActionCancelEventArgs():this(false){}//构造函数
        
        public ActionCancelEventArgs(bool cancel):this(false,""){}//构造函数
        
        public ActionCancelEventArgs(bool cancel,string message):base(cancel)//构造函数
        {
            this.message=message;
        }
    }
    /*
    基于EventArgs的新类ActionCancelEventArgs派生自CancelEventArgs,CancelEventArgs
    派生自EventArgs。CancelEventArgs添加了Cancel属性,该属性是一布尔值,它通知Senser
    对象,接收器希望取消或停止事件的处理。在ActionCancelEventArgs里还添加了
    Message属性。
    */
    
    using System;
    namespace test
    {
        public class BusEntity
        {
            string time="";
            
            public BusEntity()
            {
                Form1.Action += new Form1.ActionEventHandler(Form1_Action); 
            }
            
            private void Form1_Action(object sender,ActionCancelEventArgs e)
            {
                e.Cancel=! DoActions();
                if(e.Cancel)
                {
                    e.Message="wasn't the right time";
                }
            }
            
            private bool DoActions()
            {
                bool retVal=false;
                DateTime tm=DateTime.Now;
                
                if(tm.Second<30)
                {
                    time="the tine is"+DateTime.Now.ToLongTimeString();
                    retVal=true;
                }
                else
                {
                    time="":
                    return retVal;
                }
            }
            
            public string TimeString
            {
                get
                {
                    return time;
                }
            }
        }
    }
  • 相关阅读:
    maven超级pom内容
    elasticsearch日志删除命令
    maven 设置跳过测试
    centos7.4 开启ftp服务
    部分Linux时区改为东八区的方法
    docker overlay存储驱动介绍(传送门)
    HotSpot学习(一)——如何下载openjdk源码
    nginx 代理静态资源报 403
    【转载】C#通过遍历DataTable的列获取所有列名
    【转载】C#通过Remove方法移除DataTable中的某一列数据
  • 原文地址:https://www.cnblogs.com/refactor/p/2682364.html
Copyright © 2011-2022 走看看