我有一个动态创建一组控件的VB.NET表单。如果在窗体上查看的控件太多,表单将显示滚动条。 (这是一种自动滚动形式。)
用户可以向下滚动并单击一个按钮,这会导致表单发生显着变化。它会破坏所有控件并根据用户输入绘制新控件。
我注意到如果用户滚动到表单底部并单击按钮,当我销毁并创建新控件时,它们就不在我想要的位置。它似乎把它们放在表格的可见部分而不是顶部的顶部。
示例:
checkbox1.top = 50
checkbox1.left = 15
如果滚动条一直在底部,则复选框应放在表单可见部分的上方。相反,它从我能看到的顶部绘制了50个像素。
请帮忙。如何将控件放在绝对位置,而不是相对于滚动条的当前位置?
答案 0 :(得分:3)
您必须补偿容器控件的滚动位置。
如果是面板,那么它看起来像这样:
checkbox1.Top = Panel1.AutoScrollPosition.Y + 50
或者,你可以使用一个FlowLayoutPanel控件,它可以为你处理控件的位置。