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

本文关键字:两次 一次 方法 重写 执行 为什么 | 更新日期: 2023-09-27 18:03:57

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

我正在使用override关键字(不使用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");
            }

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

你还没有说什么是实际调用buttonclick方法,但我怀疑这是一个事件处理程序…我怀疑你在子类和基类构造函数中订阅。不要那样做——你只需要订阅一次。

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