为什么重写方法在c#中执行两次而不是一次?

为什么重写方法在c#中执行两次而不是一次?,c#,inheritance,C#,Inheritance,我有一个基类和一个派生类。 基类有一个简单的按钮和一个虚拟的受保护的按钮单击方法 我使用的是ovverride关键字(不使用new,因为我希望派生类中的buttonclick方法覆盖基类buttonclick方法) 但是,派生类buttonclick方法中的代码执行两次而不是一次 下面是代码示例 在基类中: this.ok.Click += new System.EventHandler(this.ok_Click); protected virtual void ok_Click(ob

我有一个基类和一个派生类。 基类有一个简单的按钮和一个虚拟的受保护的按钮单击方法

我使用的是ovverride关键字(不使用new,因为我希望派生类中的buttonclick方法覆盖基类buttonclick方法)

但是,派生类buttonclick方法中的代码执行两次而不是一次

下面是代码示例

在基类中:

this.ok.Click += new System.EventHandler(this.ok_Click);
    protected virtual void ok_Click(object sender, EventArgs e)
            {
                MessageBox.Show("From the Base class");
            }
在派生类中:

 this.ok.Click += new System.EventHandler(this.ok_Click);
 protected override void ok_Click(object sender, EventArgs e)
            {
                MessageBox.Show("From the Derived class");
            }

您还没有说明实际调用
按钮click
方法的是什么,但我怀疑它是一个事件处理程序。。。我怀疑您在子类和基类构造函数中都订阅了它。不要那样做-你只需要订阅一次


(如果不是这样,请给出一个简短但完整的示例。)

您没有说明实际调用
按钮单击方法的原因,但我怀疑它是一个事件处理程序。。。我怀疑您在子类和基类构造函数中都订阅了它。不要那样做-你只需要订阅一次


(如果不是这样,请给出一个简短但完整的示例。)

非常不完整的问题。一段漂亮的代码怎么样?一个可能的错误是,您向某个事件处理程序订阅了该方法两次。请在重写该方法时删除现有的onclick事件,然后再次附加它。是否可以提供一些代码示例?非常不完整的问题。一段漂亮的代码怎么样?一个可能的错误是您向某个事件处理程序订阅了两次该方法。请在重写该方法时删除现有的onclick事件,然后再次附加它。是否可以提供一些代码示例?是的,这正是我的问题。。非常感谢你帮我解决这个问题,你太棒了,谢谢你的回答!我不确定我自己会不会发现这个。是的,这正是我的问题。。非常感谢你帮我解决这个问题,你太棒了,谢谢你的回答!我不确定我自己会不会找到这个。