using System;
using System.Collections.Generic;
using System.Text;namespace ConsoleApplication1
{
   delegate void CharEventHandler(object sender,CharEventArgs e);  //为事件定义一个代理
   
  
    public class  CharEventArgs : EventArgs            //创建一个包含事件信息的类
   {
     public char CurrChar;
     public CharEventArgs(char CurrChar)
     {
       this.CurrChar=CurrChar;
     }
   }   
    class CharChecker                 //创建一个包含事件成员的类
    {
        private char curr_char;
        public event CharEventHandler CharTest;  //定义事件成员
        public char Curr_Char          //创建触发事件的的方法或属性成员 
        {
            get
            {
                return curr_char;
            }
            set
            {
                if (CharTest != null)
                {
                    CharEventArgs myeven = new CharEventArgs(value);
                    curr_char = myeven.CurrChar;
                }
            }
        }
    }    
    
    class Program
    {
        
        
        static void Main(string[] args)
        {
            CharChecker chartester = new CharChecker();
            chartester.CharTest += new CharEventHandler(Change_X);  //关联事件处理方法和事件
            chartester.Curr_Char = 'a';
            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')
            {
                Console.Write("触发的字母是 x ,");
                Console.Write ("把 x 替换成 :");
                e.CurrChar = '?';
            }
            else 
                Console.Write ("触发的字符不是 x,");
        }
    }    
}
这个程序的输出为什么会是:
事件的处理结果是 : a
事件的处理结果是 : b
x

解决方案 »

  1.   

      if (CharTest != null)
                    {
                        CharEventArgs myeven = new CharEventArgs(value);
                        curr_char = myeven.CurrChar;
                    }
    没有地方触发??/
      

  2.   

                set
                {
                    if (CharTest != null)
                    {
                        CharEventArgs myeven = new CharEventArgs(value);
                        curr_char = myeven.CurrChar;
                        CharTest(this,myeven);//少了这一行
                    }
                }
      

  3.   


    CharTest(this,myeven);//少了这一行

    这一行是用来什么 的?