如何覆盖PictureBox的Width属性? (我需要设置base.Width,但执行方法除外)
以下无效:
public class l33tProgressBar : PictureBox
{
public override int Width
{
get { return this.Width; }
set
{
myMethod();
base.Width = value;
}
}
}
答案 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;
}
}