所谓事件,不就是某些属性改变的时候触发一个方法么
而属性,就是get;set;不仅仅是个Public变量,里面是带方法的

解决方案 »

  1.   

    你可以这么定义
            private object _handlerKey = new object();        /// <summary>
            /// 选中项改变事件(需要启用AutoPostBack)
            /// </summary>
            public event EventHandler SelectedIndexChanged
            {
                add
                {
                    Events.AddHandler(_handlerKey, value);
                }
                remove
                {
                    Events.RemoveHandler(_handlerKey, value);
                }
            }        protected virtual void OnSelectedIndexChanged(EventArgs e)
            {
                EventHandler handler = Events[_handlerKey] as EventHandler;            if (handler != null)
                {
                    handler(this, e);
                }
            }      //在需要触发的代码段里去执行
           OnSelectedIndexChanged(EventArgs.Empty);//触发SelectedIndexChanged
      

  2.   

    你绑定的事件是什么,就通过那个事件触发,比如btn.click+=,就是单击button时触发
      

  3.   

        class Program
        {
            static void Main(string[] args)
            {
                Observer ob = new Observer(new Publisher());
                Console.ReadKey();
            }
        }    public class Observer
        {
            private Publisher pub;        public Observer(Publisher pub)
            {
                this.pub = pub;
                pub.SampleEvent += pub_SampleEvent;
            }        void pub_SampleEvent(object sender, SampleEventArgs e)
            {
                Console.WriteLine("The latest message is " + e.Message);
            }
        }    public class Publisher
        {
            private Timer timer;
            public Publisher()
            {
                timer = new Timer((e) => {
                    RaiseSampleEvent();
                }, new AutoResetEvent(false),1,1000);
               
            }
            // Declare the delegate (if using non-generic pattern).
            public delegate void SampleEventHandler(object sender, SampleEventArgs e);        // Declare the event.
            public event SampleEventHandler SampleEvent;        // Wrap the event in a protected virtual method
            // to enable derived classes to raise the event.
            protected virtual void RaiseSampleEvent()
            {
                // Raise the event by using the () operator.
                if (SampleEvent != null)
                    SampleEvent(this, new SampleEventArgs(DateTime.Now.ToString()));
            }
        }    public class SampleEventArgs : EventArgs
        {
            public string Message;
            public SampleEventArgs(string message)
            {
                Message = message;
            }
        }
      

  4.   

    思路错误,
    实例化event者,并不知道,也不关心这个event什么时候会被触发,
    他只需要知道,event如果被触发了,他该干什么(绑上哪些委托)