博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

C#自定义事件

Posted on 2011-07-20 20:47  itcfj  阅读(191)  评论(0编辑  收藏  举报


自定义
事件
it
   

using System;

 

delegate viod CharEventHandler(object sender, CharEventArgs e);

 

自定义了一个触发事件的参数

public class CharEventArgs  EventArgs

{

    public char CurrChar;

    public CharEventArgs(char CurrChar)

    {

        this.CurrChar = CurrChar;

    }

}

 

class CharChecker

{

   char curr_char;

public event CharEventHandler CharTest;

 

public char Curr_Char

    {

      get{return curr_char;}

      set

      {

       if(CharTest!=null)       

        {

          CharEventArgs myeven=new CharEventArgs(value);

          CharTest(this,myeven); 在这里触发事件

          curr_char=myeven.CurrChar      

         }

       }

    }

}

 

class AppEvent

{

 static void Main()

 {

  CharChecker chartester=new CharChecker();

  chartester.CharTest+=new CharEventHandler(Change_X);触发事件Chartest时, 绑定到Change_X函数上

 

  chartester.Curr_Char='a'; 运行Curr_Char的Set方法, 触发事件

  Console.WriteLine(事件处理结果:{0},chartester.Curr_Char);

  chartester.Curr_Char='b';

  Console.WriteLine(事件处理结果:{0},chartester.Curr_Char);

  chartester.Curr_Char='x';

  Console.WriteLine({0},chartester.Curr_Char);

   Console.WriteLine();

 }

static void Change_X(Object source, CharEventArgs e)

 {

  if(e.CurrChar=='x'  e.CurrChar='X')

   {

     Console.Write(触发的字符是x,);

     Console.Write(把x替为:);

     e.CurrChar='';  

   }

  else

  Console.Write(触发的字符不是x,);

 }

}

 

 

运行结果:

触发的字符不是x,事件处理的结果a

触发的字符不是x,事件处理的结果b

触发的字符是x,把x替为:?