比如如何注销一个按钮btn上的Click事件?

解决方案 »

  1.   

    button1.Click += new System.EventHandler(this.button1_Click);//注册
    button1.Click -= new System.EventHandler(this.button1_Click);//注销
      

  2.   

    我的意思是this.button1_Click是不能得到的。。
      

  3.   

       
            private void button1_Click(object sender, RoutedEventArgs e)
            {
                MessageBox.Show("你好");
                this.button1.Click-=new RoutedEventHandler(button1_Click);
            }
      

  4.   

    假如我不知道调用的是button1_Click
    应该怎么注销?
      

  5.   

    你那button1.Enable=false算了
      

  6.   


     static void Main(string[] args)
            {
                System.Windows.Forms.Button btn = new System.Windows.Forms.Button();
                btn.Click += new EventHandler(btn_Click);
                btn.Click += new EventHandler(btn_Click2);
                btn.Click += new EventHandler(btn_Click3);
                PropertyInfo pi = btn.GetType().GetProperty("Events", BindingFlags.Instance | BindingFlags.NonPublic);
                EventHandlerList ehl = (EventHandlerList)pi.GetValue(btn, null);
                FieldInfo fieldInfo = (typeof(System.Windows.Forms.Control)).GetField("EventClick", BindingFlags.Static | BindingFlags.NonPublic);
                Delegate d = ehl[fieldInfo.GetValue(null)];
                foreach (Delegate del in d.GetInvocationList())
                    Console.WriteLine(del.Method.Name);
            }        static void btn_Click(object sender, EventArgs e)
            {
                Console.WriteLine("Click1");
            }        static void btn_Click2(object sender, EventArgs e)
            {
                Console.WriteLine("Click2");
            }        static void btn_Click3(object sender, EventArgs e)
            {
                Console.WriteLine("Click3");
            }