委托和事件简单样例
先上全部代码样例
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循环一直继续就行。