Как переопределить метод? - PullRequest
0 голосов
/ 04 июня 2009

Я создал событие OnPaint своей кнопки, которое в последнее время пытался переопределить, но мне не удалось

Мой код:

    protected override void button1_Paint(PaintEventArgs e)
    {
    }

Я получаю эту ошибку: «не найден подходящий метод для переопределения».

Что я должен сделать, чтобы ошибка исчезла, но оставить метод переопределенным?

Ответы [ 6 ]

3 голосов
/ 04 июня 2009

Метод, который вы хотите переопределить, вероятно, называется OnPaint, а не button1_Paint. Измените объявление метода, чтобы оно выглядело так:

protected override void OnPaint(PaintEventArgs e) { }

Обратите внимание, что этот код должен находиться в подклассе класса, из которого вы хотите переопределить метод. Если вы поместите этот метод в форму, он будет обрабатывать рисование этой формы.

3 голосов
/ 04 июня 2009

Если метод не виртуальный, вы не можете переопределить его. Если вы не можете переопределить его, нет смысла пытаться сохранить ключевое слово override.

Если вы хотите скрыть метод, вы используете ключевое слово new вместо override.

1 голос
/ 04 июня 2009

В вашем базовом классе вам нужно объявить метод как virtual

пример:

public class Person
{
    public virtual void DoSomething()
    {
        // do something here
    }
}

public class Employee : Person
{
    public override void DoSomething()
    {
        base.DoSomething();
    }
}

Edit:

Возможно, это поможет вам?

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    protected override void OnPaint(PaintEventArgs e)
    {
        base.OnPaint(e);
    }

    private void button1_Paint(object sender, PaintEventArgs e)
    {

    }


}
0 голосов
/ 04 июня 2009

Полагаю, у вас сейчас что-то вроде этого:

public class MyButton : Button {
    public MyButton() {
        this.Paint += new PaintEventHandler(MyButton_Paint);
    }

    void MyButton_Paint(object sender, PaintEventArgs e) {
        //your code
    }
}

Если вы унаследовали от кнопки, вы должны использовать этот код:

public class MyButton : Button {
    protected override void OnPaint(PaintEventArgs pevent) {
        base.OnPaint(pevent);
    }
}
0 голосов
/ 04 июня 2009

вы переопределяете методы, поступающие из других классов. Чтобы сохранить метод, вам нужно поместить его в дочерний класс и вызвать его оттуда.

у вас есть переопределение в том же классе, что и оригинальный метод? если это так, просто объедините функции и удалите переопределение.

0 голосов
/ 04 июня 2009

Вы должны объявить метод в базовом классе как virtual, чтобы иметь возможность переопределить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...