C #: ширина переопределения PictureBox - PullRequest
1 голос
/ 09 сентября 2011

Как я могу переопределить свойство ширины PictureBox?(Мне нужно установить base.Width, но дополнительно для выполнения метода)

Следующее не работает:

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

            base.Width = value;
        }
    }
}

Ответы [ 2 ]

1 голос
/ 09 сентября 2011

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

public class l33tProgressBar : PictureBox
{
    public void SetWidthMyWay(int width)
    {
        myMethod();
        this.Width = width;
    }
}
1 голос
/ 09 сентября 2011

Width не является виртуальным, поэтому вы не можете переопределить его.Однако вы можете перезаписать его, используя ключевое слово new.

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

        base.Width = value;
    }
}

Тем не менее, лучшим вариантом может быть переопределение SizeChanged ( документов ) вместо обработчика событий

public override void OnSizeChanged(EventArgs e)
{
   // Width or Height has been changed
   base.OnSizeChanged(e); // Essential, or event will not be raised!
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...