我创建了一个按钮的OnPaint事件,我最近试图覆盖它,但是我失败了
我的代码:
protected override void button1_Paint(PaintEventArgs e)
{
}
我收到此错误:“找不到合适的方法来覆盖”。
我该怎么做才能使错误消失,但保持方法为覆盖?
答案 0 :(得分:3)
如果方法不是虚拟的,则无法覆盖它。如果您无法覆盖它,那么尝试保留override
关键字是没有意义的。
如果您想隐藏该方法,请使用new
关键字代替override
。
答案 1 :(得分:3)
您要覆盖的方法可能称为OnPaint,而不是button1_Paint。更改方法声明,使其看起来像这样:
protected override void OnPaint(PaintEventArgs e) { }
请注意,此代码应位于要从中重写方法的类的子类中。如果将此方法放在表单中,它将处理该表单的绘制。
答案 2 :(得分:1)
在基类中,您需要将方法声明为virtual
示例:
public class Person
{
public virtual void DoSomething()
{
// do something here
}
}
public class Employee : Person
{
public override void DoSomething()
{
base.DoSomething();
}
}
修改强>
也许这可以帮到你?
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)
{
}
}
答案 3 :(得分:0)
您应该将基类中的方法声明为virtual
,以便能够覆盖它。
答案 4 :(得分:0)
您覆盖来自其他类的方法。要保留该方法,您必须将其放在子类中并从那里调用它。
你在与原始方法相同的类中有覆盖吗?如果是这样,只需合并函数并删除覆盖。
答案 5 :(得分:0)
我猜你现在有这样的事情:
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);
}
}