委托和事件简单样例

  先上全部代码样例

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循环一直继续就行。

 

posted @ 2016-06-15 16:39  shuanzhi  阅读(302)  评论(0编辑  收藏  举报