zoukankan      html  css  js  c++  java
  • C#类对象的事件定义

    1. 类对象代码

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Timers; 
    
    namespace WinformEventTest
    {
        /// <summary>
        /// 定义了一个 ShowString 事件的对象类
        /// </summary>
        internal class EventClass
        {
            /// <summary>  
            /// 声明委托  
            /// </summary>  
            /// <param name="a">委托传递的参数</param>  
            public delegate void BroadcastEventHander(string a);
            /// <summary>
            /// 声明委托相关的事件
            /// </summary>
            public event BroadcastEventHander Broadcast;
    
            /// <summary>
            /// 声明定时器
            /// </summary>
            private Timer _timer;
    
            /// <summary>
            /// 
            /// </summary>
            public EventClass()
            {
                _timer = new Timer(1000);
                _timer.Elapsed += new ElapsedEventHandler(Timer_Elapsed);
                _timer.Enabled = true;
            }
    
            /// <summary>
            /// 内部定时器事件,用于模拟产生事件
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            void Timer_Elapsed(object sender, ElapsedEventArgs e)
            {
                try
                {
                    Broadcast("来自 EventClass 对象事件的消息:" + DateTime.Now.ToString()); // 产生事件
                }
                catch (Exception)
                {
    
                }
            }
        }
    }

    2.Winform调用举例

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace WinformEventTest
    {
        public partial class Form1 : Form
        {
            // 声明变量
            EventClass _eventClass;
    
            /// <summary>  
            /// 控制台打印字符串
            /// </summary>  
            /// <param name="a"></param>  
            public void ConsoleShowTxt(string a)
            {
                Console.WriteLine(DateTime.Now.ToString() + " | " + a + "
    ");
            }
            
            public Form1()
            {
                InitializeComponent();
    
                // Member initialize
                _eventClass = new EventClass();
    
                // Member event initialize
                _eventClass.Broadcast += new EventClass.BroadcastEventHander(ConsoleShowTxt); // 委托类事件(Broadcast)绑定实际处理方法(ConsoleShowTxt)
            }
        }
    }
  • 相关阅读:
    (译).NET4.X并行任务Task需要释放吗?
    微软面向高并发应用而推出的新程序库——TPL Dataflow
    C# 5.0 Async函数的提示和技巧
    内存泄露——文章
    AJAX POST请求中参数以form data和request payload形式在php中的获取方式
    NodeJS中间层搭建
    HTML5上传预览
    laravel 图片上传 ajax 方式
    抽奖程序
    IText 生成页脚页码
  • 原文地址:https://www.cnblogs.com/jayhust/p/5903403.html
Copyright © 2011-2022 走看看