Как я могу определить, когда Control.PreferredSize изменяется? - PullRequest
1 голос
/ 04 августа 2010

Я использую Control.PreferredSize , чтобы определить, какой ScrollableControl.AutoScrollMinSize должен быть для формы. Это необходимо устанавливать каждый раз, когда изменяется свойство PreferredSize элемента управления, но, по-видимому, событие Control.PreferredSizeChanged отсутствует. Есть ли способ обнаружения изменения этого свойства (возможно, с использованием Control.WndProc )? Я бы предпочел избегать опроса собственности, если этого можно избежать.

1 Ответ

1 голос
/ 19 августа 2010

Вы можете переопределить OnLayout или OnPaint.

    private Size m_CurrentPreferedSize;
    protected override void OnLayout(LayoutEventArgs e)
    {
        base.OnLayout(e);
        Size newSize = PreferredSize;
        if(m_CurrentPreferedSize != newSize)
        {
           m_CurrentPreferedSize  = newSize;
           //Your code here 
        }
    }

PreferredSize рассчитывается при каждом вызове.

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