C#:PictureBox覆盖宽度

时间:2011-09-09 13:42:06

标签: c# override picturebox

如何覆盖PictureBox的Width属性? (我需要设置base.Width,但执行方法除外)

以下无效:

public class l33tProgressBar : PictureBox
{
    public override int Width
    {
        get { return this.Width; }
        set
        {
            myMethod();

            base.Width = value;
        }
    }
}

2 个答案:

答案 0 :(得分:1)

Width不是虚拟的,所以你无法覆盖它。但是,您可以使用new关键字覆盖它。

public new int Width
{
    get { return base.Width; }
    set
    {
        myMethod();

        base.Width = value;
    }
}

但是,更好的选项可能会覆盖SizeChanged docs事件处理程序而不是

public override void OnSizeChanged(EventArgs e)
{
   // Width or Height has been changed
   base.OnSizeChanged(e); // Essential, or event will not be raised!
}

答案 1 :(得分:1)

为它创建一个方法可能会更清晰。将方法调用隐藏在其他人期望的继承属性中并不是一种可读或可维护的方法。

public class l33tProgressBar : PictureBox
{
    public void SetWidthMyWay(int width)
    {
        myMethod();
        this.Width = width;
    }
}