表格有滚动条时,控制位置是否相对于表格的可见区域?

时间:2013-11-11 22:27:51

标签: vb.net winforms

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

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

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

示例:

 checkbox1.top = 50
 checkbox1.left = 15

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

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

1 个答案:

答案 0 :(得分:3)

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

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

checkbox1.Top = Panel1.AutoScrollPosition.Y + 50

或者,你可以使用一个FlowLayoutPanel控件,它可以为你处理控件的位置。