.NET自定义事件处理

//首选在类中做如下操作:
public class CBook
{
    private string m_title;
    public delegate void TitleChangeHandle();   //1,创建委托
    public event TitleChangeHandle TitleChange;  //2 创建事件
    public string Title
    {
        set
        {
            this.m_title = value;
            TitleChange();   //3测试,当属性值改变时来触发事件
        }
    }
}
//在调用页面:
//首先编写事件处理函数:
void BookChange()
{
    Response.Write("事件执行了");
}
//最后用下面一个小例子测试一下:
CBook book = new CBook();
book.TitleChange+=new CBook.TitleChangeHandle(BookChange);//添加事件
book.Title = "test";

//==============================================
//EventHandler以及其它自定义的事件委托都是一类特殊的委托,他们有相同的形式:

delegate void 事件委托名(object sender,EventArgs e);

//object用来传递事件的发生者,比如二中的Button控件就是一个事件发生者;EventArgs用来传递事件的细节。

//例程二:
class Class1
{
    public delegate void UserRequest(object sender,EventArgs e); //定义委托
    public event UserRequest OnUserRequest; //定义一个委托类型的事件

    public void run()
    {
        while(true)
        {
            if(Console.ReadLine()=="a")
            {
                OnUserRequest(this,new EventArgs()); //产生事件
            }
        }
    }
}

// 事件接收类
class Class2
{
    static void Main(string[] args)
    {
        Class1 c1 = new Class1();
        //委托实例化后绑定到事件
        c1.OnUserRequest += new Class1.UserRequest(c1_OnUserRequest); 
        c1.run();
    }

    private static void c1_OnUserRequest(object sender, EventArgs e)//事件处理方法
    {
        Console.WriteLine("\t你触发了事件!");
    }
}


//例程三:程序代码

// 带事件数据的事件类,从EventArgs继承
class OnUserRequestEventArgs:EventArgs
{
    private string inputText;
    public string InputText
    {
        get
        {
            return inputText;
        }
        set
        {
            inputText = value;
        }
    }
}

// 事件发送类
class Class1
{
    public delegate void UserRequest(object sender,OnUserRequestEventArgs e);//声明委托
    public event UserRequest OnUserRequest;//定义一个委托类型的事件

    public void run()
    {
        while(true)
        {
            Console.WriteLine("请输入内容:");
            string a=Console.ReadLine();
            //if(a=="a")
            //{
            OnUserRequestEventArgs e1 = new OnUserRequestEventArgs();
            e1.InputText = a;
            OnUserRequest(this,e1);
            //}
        }
    }
}

// 事件接收类
class Class2
{
    [STAThread]
    static void Main(string[] args)
    {
        Class1 c1 = new Class1();
        c1.OnUserRequest += new Class1.UserRequest(c1_OnUserRequest);
        c1.run();
    }

    private static void c1_OnUserRequest(object sender, OnUserRequestEventArgs e)
    {
        Console.WriteLine("\t你输入的是:"+e.InputText);
    }
}

//例程三跟例程二唯一的差别在于自定义了一个类OnUserRequestEventArgs,从EventArgs继承
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值