class demo
{
   static String Name;
   public static void Main()
   {
      Name = Console.ReadLine();
   }
}
有这样的一个简单的类,就是更改Name.我要的事件例子是,如果输入的值跟原来的一样,没有任何特殊的操作,如果输入的值和原来的值不同,则触发一个事件,输出"名字改变了".
这里仅仅是要练习一下事件而已,所以就不要给出别的替代方法了.谢谢.

解决方案 »

  1.   

    public class NameChangeArgs: System.EventArgs
    {
    public string OldName;
    public string NewName;
    } public delegate void NameChanged(NameChangeArgs e); class demo
    {
    public static event NameChanged NameChanged;
    static string _name = null;
    static String Name
    {
    get
    {
    return _name;
    }
    set
    {
    if(value != _name)
    {
    if( NameChanged != null)
    {
    NameChangeArgs e = new NameChangeArgs();
    e.OldName = _name;
    e.NewName = value; NameChanged( e);
    }
    _name = value;
    }
    }
    }
    }
      

  2.   

    using System.
    using System.Collections.Generic;
    using System.Text;namespace EventApp
    {
        public delegate void newEventHandler(object sender,int addNum);
        class myEvent
        {
            //事件
            public event newEventHandler eee;        // test
            private int i;        
            /// <summary>
            ///  构造函数
            /// </summary>
            public myEvent()
            {
                this.i = 0;
            }
            /// <summary>
            /// 属性变化,触发事件
            /// </summary>
            public int I
            {
                get
                {
                    return i;
                }
                set
                {
                    i = value;
                    if (eee != null)
                    {
                        eee(this, this.I);
                    }
                }
            }
            /// <summary>
            /// i增加
            /// </summary>
            public void add()
            {
                this.I++;
                //if (eee != null)
                //{
                //    eee(this, this.I);
                //}
            }
        }
    }
    2222222222222.实例化Event类后using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.Threading;
    namespace EventApp
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            private void btnEvent_Click(object sender, EventArgs e)
            {
                me.add();
            }
            /// <summary>
            /// 事件处理过程
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="i"></param>
            private void me_eee(object sender, int i)
            {
                label1.Text = i.ToString();
            }
            /// <summary>
            /// 添加事件
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void Form1_Load(object sender, EventArgs e)
            {
                this.me.eee += new newEventHandler(this.me_eee);
            }
        }
    }
      

  3.   

    编写事件处理程序所需要的一般步骤。
    1:声明委派类
    2:定义System.EventArgs类的派生类,存储事件相关的信息
    3:在可能触发事件的类中使用关键字event声明事件,形式如下
    event delegateName eventObject其中event关键字声明一个全新的事件eventObject,由于事件的行为是利用委派类对象的支持所完成,那么delegateName既为支持处理事件的委派名称。
    4:定义事件处理程序的方法成员
    5:使用委派对象封装方法成员
    6:引用委派方法处理触发事件
      

  4.   

    public delegate void AddEvevtHandler(object sender, AddEvevtArgs e);public class AddEvevtArgs : EventArgs
    {
    public int intValue;
    public AddEvevtArgs(int intValue)
    {
    this.intValue = intValue;
    }
    }public class EventTest
    {
    public event  AddEvevtHandler  AddEvent;
    public int Sum = 0;
    public EventTest()
    {
    m_al = new ArrayList();
    AddEvent +=new AddEvevtHandler(EventTest_AddEvent);
    } public void Add(int intValue)
    {

    m_al.Add(intValue);
    AddEvevtArgs e = new AddEvevtArgs(intValue);
    if (AddEvent != null)
    {
    AddEvent(this, e);
    }

    }
    public void Summary()
    {
    Sum = 0;
    foreach (int intValue in m_al)
    {
    Sum += intValue;
    }
    }

    private ArrayList m_al; private void EventTest_AddEvent(object sender, AddEvevtArgs e)
    {
    Sum += e.intValue;
    }
    }
    public class case1
    {
    private EventTest test; public case1()
    {
    test = new EventTest();
    test.AddEvent +=new AddEvevtHandler(test_AddEvent);

    } public void DoTest()
    {
    for (int i = 0; i < 10; i++)
    {
    test.Add(i);

    }
               Console.WriteLine(test.Sum); Console.WriteLine("Summary: ");
    test.Summary();
    Console.WriteLine(test.Sum);
    }
    }class Class1
    {
    /// <summary>
    /// 应用程序的主入口点。
    /// </summary>
    [STAThread]
    static void Main(string[] args)
    {
    case1 t = new case1();
    t.DoTest();
    Console.Read();

    }
    }