zoukankan      html  css  js  c++  java
  • 委托和事件简单样例

      先上全部代码样例

    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;
    using System.Threading;
    
    namespace Event
    {
        public partial class Form1 : Form
        {
            private delegate void TextWacthEventHandler();
    
            private event TextWacthEventHandler textWatch;
    
            private bool flag = true;
            public Form1()
            {
                InitializeComponent();
                textWatch += new TextWacthEventHandler(OnTextChaned);
                Thread thread1 = new Thread(CheckText);
                thread1.Start();
            }
    
            private void OnTextChaned()
            {
                if (textWatch!=null)
                {
                    MessageBox.Show("注意!");
                }
            }
    
            private void CheckText()
            {
                while (true)
                {
                    if (txt_Text.Text.ToString() == "123")
                    {
                        OnTextChaned();
                        flag = false;
                    }
                    Thread.Sleep(1 * 1000);
                }
            }
        }
    }

      利用Winform做了一个样例,窗体上只加了一个TextBox进行测试。测试内容是监控TextBox的内容,当TextBox中输入的内容为123时,触发时间,并会有弹窗提示。

      创建一个事件前,首先需要创建一个委托,这里将委托命名为TextWacthEventHandler。

      之后我们再开始创建事件,事件的类型是刚刚定义的委托。格式为: event 委托类型 事件名称,即 event TextWacthEventHandler textWatch。这里event是事件的关键字,返回类型是委托。

      创建完事件,我们还需要写一个方法OnTextChanged来处理这个事件,否则刚才创建的事件就白瞎了。每当调用到该方法时,则触发事件。

      最后,我们得再写一个CheckText方法来不停地每隔一秒都监控一次TextBox的内容,否则我们将无法触发事件。这里我设置了一旦触发事件将不会再进行对TextBox的监控,也可以设置成不论是否触发事件都会继续每隔一秒监控一次,只需要让while循环一直继续就行。

  • 相关阅读:
    C#中IEnumerable、ICollection、IList、List之间的区别
    H5中画图标签Canvas---画矩形,画线,画圆,渐变色,图形载入
    centos启用ftp功能
    CentOS 7 安装FTP服务器(vsftpd)
    Linux下如何修改用户默认目录
    Centos搭建FTP服务器
    MyBatis 示例之存储过程
    MyBatis:MyBatis操作MySQL存储过程
    mybatis的select、insert、update、delete语句
    日常运维中的相关日志切割处理方法总结 [Logrotate、python、shell脚本实现 ]
  • 原文地址:https://www.cnblogs.com/yupeiyuan/p/5588023.html
Copyright © 2011-2022 走看看