C# 如何在动画期间冻结控件上的滚动?

C# 如何在动画期间冻结控件上的滚动?,c#,winforms,user-interface,controls,C#,Winforms,User Interface,Controls,C#,WinForms,我制作了自己的UserControl名为ListOfControls,它接受其他控件,并像垂直布局一样显示它们,如下所示: |-------------------| | Control 1 | |-------------------| |-------------------| | Control 2 | |-------------------| |-------------------| | Control 3 |

C#,WinForms,我制作了自己的
UserControl
名为
ListOfControls
,它接受其他
控件
,并像垂直布局一样显示它们,如下所示:

|-------------------|
|    Control 1      |
|-------------------|
|-------------------|
|    Control 2      |
|-------------------|
|-------------------|
|    Control 3      |
|-------------------|
正如您所想象的,列表越来越大,所以我在控件列表上应用了
AutoScroll
。现在,我有时想在运行时交换
控件1
26
。因为
控件26
远低于当前可见区域(用户只看到前9个控件,然后他必须滚动),我必须说明
控件列表的
垂直滚动。值

这里有一个陷阱:控件的交换是动画化的(
control1
向下移动,
control26
向上移动)并且启用了
AutoScroll
,因此在动画期间,滚动试图解释它,但最终完全弄乱了控件的最终位置


有没有办法将滚动冻结在当前位置并等待动画完成?

为了防止移动控件时发生自动滚动烟花,最好自己控制环境。将AutoScroll属性设置为false,并将AutoScrollMinSize属性设置为控件占用的画布大小。

关闭AutoScroll,然后自己设置AutoScrollMinSize。@LarsTech成功了。如果你愿意,可以写下来作为答案,我会接受的。