zoukankan      html  css  js  c++  java
  • c#事件

    namespace xxxx
    {
        //发布事件的类
        public class TestEventSource
        {
            //定义事件参数类
            public class TestEventArgs : EventArgs
            {
                public readonly char KeyToRaiseEvent;
                public TestEventArgs(char keyToRaiseEvent)
                {
                    KeyToRaiseEvent = keyToRaiseEvent;
                }
            }
    
            //定义delegate
            public delegate void TestEventHandler(object sender, TestEventArgs e);
            //用event 关键字声明事件对象
            public event TestEventHandler TestEvent;
            //事件触发方法
            protected virtual void OnTestEvent(TestEventArgs e)
            {
                if (TestEvent != null)
                    TestEvent(this, e);
            }
            //引发事件
            public void RaiseEvent(char keyToRaiseEvent)
            {
                TestEventArgs e = new TestEventArgs(keyToRaiseEvent);
                OnTestEvent(e);
            }
        }
        //监听事件的类
        public class TestEventListener
        {
            //定义处理事件的方法,他与声明事件的delegate具有相同的参数和返回值类型
            public void KeyPressed(object sender, TestEventSource.TestEventArgs e)
            {
                Console.WriteLine("发送者:{0},所按得健为:{1}", sender, e.KeyToRaiseEvent);
            }
            //订阅事件
            public void Subscribe(TestEventSource evenSource)
            {
                evenSource.TestEvent += new TestEventSource.TestEventHandler(KeyPressed);
            }
            //取消订阅事件
            public void UnSubscribe(TestEventSource evenSource)
            {
                evenSource.TestEvent -= new TestEventSource.TestEventHandler(KeyPressed);
            }
        }
        //测试类
        public class Test
        {
            public static void Main()
            {
                //创建事件源对象
                TestEventSource es = new TestEventSource();
                //创建监听对象
                TestEventListener el = new TestEventListener();
                //订阅事件
                Console.WriteLine("订阅事件\n");
                el.Subscribe(es);
                //引发事件
                Console.WriteLine("输入一个字符,再按enter键");
                string s = Console.ReadLine();
                es.RaiseEvent(s.ToCharArray()[0]);
                //取消订阅事件
                Console.WriteLine("\n取消订阅事件\n");
                el.UnSubscribe(es);
                //引发事件
                Console.WriteLine("输入一个字符,再按enter健");
                s = Console.ReadLine();
                es.RaiseEvent(s.ToCharArray()[0]);
    
            }
        }
    }
    

      

  • 相关阅读:
    DeepEarth更新到Silverlight 4了
    Silverlight & Blend动画设计系列八:拖放(DragDrop)操作与拖放行为(DragBehavior)
    VS2010之vb.net:细节决定成败
    iVIEW: An Intelligent Video over InternEt and Wireless Access System
    Tianya Doc
    治疗咳嗽
    一个 研究 可视化的个人博客
    Windows自启动方式完全总结
    JAVA连接DB2
    JSP 与 Discuz整合
  • 原文地址:https://www.cnblogs.com/YYi_H/p/2159832.html
Copyright © 2011-2022 走看看