Здравствуйте.
Вопрос такой: мне необходимо менять размеры формы в момент, когда изменяет ее размеры сам пользователь. Конкретно, пользователь меняет ширину формы, и мне нужно динамически менять высоту формы.
Для примера я приведу простой вариант: скажем, высота формы 200, а на событие OnResize написан следующий обработчик:
private void Form1_Resize(object sender, EventArgs e)
{
Height = 400;
}
Если запустить и потянуть мышкой правую границу формы, то она начнет МЕРЦАТЬ, и будет дергаться размер формы от 200 до 400. При этом, если мышку отпустить, высота формы будет равна 400.
Я понимаю, что, изменяя размер формы программно, мы шлем сообщение в очередь сообщений формы. А если мы это делаем в обработчике этого события, то делаем это рекурсивно. Вроде понятно, что, чтобы прекратить это безумие, надо проверять размер формы:
private void Form1_Resize(object sender, EventArgs e)
{
if (Height != 400)
Height = 400;
}
Но проблема в том, что размер формы видимо не ставится в момент OnResize, а ставится попозже.
Но почему она мерцает то??
Я попробовал события Layout, BeginResize, но ничего эффекта не дало.
Меня интересует, как сделать так, чтобы форма не мерцала при изменении ее размеров.