【问题标题】:Is control location relative to visible area of form when form has scroll bar?当表单具有滚动条时,控件位置是否相对于表单的可见区域?
【发布时间】:2013-11-11 22:27:50
【问题描述】:

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

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

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

例子:

 checkbox1.top = 50
 checkbox1.left = 15

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

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

【问题讨论】:

  • 使用 SuspendLayout + ResumeLayout(true) 方法的少数几个好理由之一。

标签: vb.net winforms


【解决方案1】:

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

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

checkbox1.Top = Panel1.AutoScrollPosition.Y + 50

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-19
    • 1970-01-01
    相关资源
    最近更新 更多