WinForms - действие после события изменения размера - PullRequest
12 голосов
/ 21 июня 2010

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

Ответы [ 3 ]

13 голосов
/ 21 июня 2010

Просто используйте событие ResizeEnd:

private void Form1_ResizeEnd(object sender, EventArgs e)
{
   // Your code here
}

Из MSDN:

Событие ResizeEnd вызывается, когда пользователь завершает изменение размера формы.обычно перетаскивая одну из границ или размерную ручку, расположенную в правом нижнем углу формы, и затем освобождая ее.Для получения дополнительной информации об операции изменения размера.

2 голосов
/ 22 мая 2015

Вы можете подделать локальный ResizeEnd, как это:

public class Dummy:UserControl
{

    private readonly Timer _tDelayedResize;

    public Dummy()
    {
        this.Resize += this_Resize;
        _tDelayedResize = new Timer();
        _tDelayedResize.Interval = 5;
        _tDelayedResize.Tick += this_ResizeEnd;
    }

    void this_Resize(object sender, EventArgs e)
    {
        _tDelayedResize.Stop();
        _tDelayedResize.Start();
    }

    void this_ResizeEnd(object sender, EventArgs e)
    {
        _tDelayedResize.Stop();

        //Do your ResizeEnd logic here
        //...
    }

}

Интервал можно изменить. Чем выше, тем больше задержка после последнего события изменения размера.

0 голосов
/ 21 июня 2010

Возможно, вы можете использовать событие SizeChanged . Но я не знаю, как часто или когда он вызывается при изменении размера.

...