Можно ли выполнить определенное действие после события изменения размера (пользовательского элемента управления), например, когда кнопка мыши отпущена? Мне нужно вручную изменить размер внутреннего элемента управления и сделать это при каждом запуске события будет довольно, хм, неэффективно...
WinForms - действие после изменения размера
Ответ 1
Просто используйте событие ResizeEnd
:
private void Form1_ResizeEnd(object sender, EventArgs e)
{
// Your code here
}
Из MSDN:
Событие ResizeEnd возникает, когда пользователь заканчивает изменение формы, обычно путем перетаскивания одного из границы или размерную ручку, расположенную на нижний правый угол формы, а затем освободить его. Для большего информация об изменении размера операции.
Ответ 2
Вы можете подделать локальный 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
//...
}
}
Интервал может быть изменен. Чем выше, тем больше задержка после последнего события изменения размера.
Ответ 3
Возможно, вы можете использовать SizeChanged Событие. Но я не знаю, как часто или когда он вызывается во время изменения размера.