Изменение размера формы в обработчике OnResize
От: Alex14  
Дата: 14.01.12 21:43
Оценка:
Здравствуйте.
Вопрос такой: мне необходимо менять размеры формы в момент, когда изменяет ее размеры сам пользователь. Конкретно, пользователь меняет ширину формы, и мне нужно динамически менять высоту формы.
Для примера я приведу простой вариант: скажем, высота формы 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, но ничего эффекта не дало.
Меня интересует, как сделать так, чтобы форма не мерцала при изменении ее размеров.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.