2

我有一个动态创建一组控件的 VB.NET 表单。如果窗体上要查看的控件太多,窗体将显示滚动条。(这是一个自动滚动表单。)

用户可以向下滚动并单击一个按钮,该按钮会导致表单发生巨大变化。它会破坏所有控件并根据用户输入绘制新控件。

我注意到,如果用户滚动到表单底部并单击按钮,当我销毁并创建新控件时,它们不会位于我想要的位置。似乎将它们相对于表单的可见部分而不是顶部的顶部。

例子:

 checkbox1.top = 50
 checkbox1.left = 15

如果滚动条一直在底部,则复选框应放在表单可见部分的上方。相反,它是从我能看到的顶部 50 像素处绘制的。

请帮忙。如何使其将控件放置在绝对位置,而不是相对于滚动条的当前位置?

4

1 回答 1

3

您必须补偿容器控件的滚动位置。

如果是一个面板,那么它看起来像这样:

checkbox1.Top = Panel1.AutoScrollPosition.Y + 50

或者,您可以只使用 FlowLayoutPanel 控件,该控件将为您处理控件的放置。

于 2013-11-11T22:38:31.387 回答