Я делал это раньше. Начните с организации вашей формы в логических разделах. Не оставляйте все свои элементы управления в форме, разместите их внутри панелей. Во время разработки вам нужно, чтобы панели были «полностью развернуты», но затем во время выполнения вы манипулируете панелями left, top, width, height и, возможно, даже свойствами выравнивания и привязки через код. Вы можете использовать таймер в соответствии с предложением @Adam Rackis .. или изменить значение приращения, чтобы изменить скорость анимации. Сама анимация - это просто цикл, который начинается с x = x1 и заканчивается x = x2, где x = x + increment_value внутри цикла. При изменении значения «x» компонент будет автоматически перерисован. Чтобы получить более плавный эффект, вам может понадобиться перекрашивать элемент управления (или всю панель) на каждой итерации. Если он работает слишком быстро, вы можете либо вставить задержку, либо попытаться заставить цикл полагаться на таймер. У меня были проблемы с таймерами для такого рода вещей, но по общему признанию я не использовал C # .NET в то время (я сделал это в Delphi). Для того, чтобы это работало, нужно много поиграться с мелкими деталями, так что наберитесь терпения, это не Flash! Удачи.