Как сделать плавное изменение размера Windows Forms C

Пытаюсь сделать так чтобы панель при наведении мыши плавно падала вниз и когда убираешь мышь она так же плавно возвращается, первое получилось, при втором проблемы. Когда убираю мышь то панель резко исчезает, точнее уменьшает свой размер до нуля как я понял.

анимация вниз:
private void panel2_Paint(object sender, PaintEventArgs e)
{
panel2.MouseEnter += async (s, a) =>
{
while (panel2.Height < 288)
{
await Task.Delay(1);
panel2.Height = (panel2.Height + 15);
}
};

возвращение:
panel2.MouseLeave += async (s, a) =>
{
while (panel2.Height!= 96)
{
await Task.Delay(1);
panel2.Height = (panel2.Height - 25);
}
};
}

Ну у тебя там скорость повыше, это один момент.
А второй заключается в том, что при инкременте 15 и декременте 25 она у тебя не обязана стать в высоту именно 96. Пусть она у тебя изначально 96, потом 96+15, потом 96+15-25=86 - и пошла себе дальше уменьшаться, и так до бесконечности.

Добавить комментарий