事件定义及使用(一)

//事件参数定义
    class MyEventArgs : EventArgs
    {
        public MyEventArgs(string s) { InputString = s; }
        public string InputString { get; private set; }
        public bool Cancel { get; set; }
    }


 //事件
    class MyEvent
    {
        public event EventHandler OnInput; //定义一个委托类型的事件  
        public void WaitInput()
        {
            while (true)//监视输入的循环
            {
                string str = Console.ReadLine();
                if (!string.IsNullOrEmpty(str))
                {
                    MyEventArgs myevent = new MyEventArgs(str);

                    OnInput(this, myevent); //触发事件  
                    if (myevent.Cancel)
                    {
                        Console.WriteLine("退出监听!");
                        break;
                    }               
                }
            }
        }


//调用方法

static void Main(string[] args)
        {
            MyEvent Evt = new MyEvent();    //实例化
            Evt.OnInput += On_Input;        //绑定事件
            Evt.WaitInput();                //监听输入
            //Evt.OnInput -= On_Input;        //解绑事件
            Console.ReadLine();

        }

        //事件处理方法
        private static void On_Input(object sender, MyEventArgs e)
        {
            if (e.InputString == "x")
                e.Cancel = true; //设置取消监听
            else
                Console.WriteLine("您输入了:" + e.InputString);
        }

你可能感兴趣的:(C#,c#,开发语言,后端)