在面板中,我绘制控件,例如按钮/文本框,位于面板中的起始位置(0,0)。这些控件在开始时是不可见的和禁用的。我在面板外面有一个按钮,按下时可以看到这些按钮/文本框,并将它们放置在面板中的新位置。
问题是如果用户将面板滚动到某些(x,y),然后按下'make visible'按钮,按钮的新(x,y)位置将从当前(x,y)位置计算出来。面板 - 不是从面板的顶部(0,0)。
我想知道这是否是面板的正确行为,为了解决这个问题,我需要在重新定位按钮时将this.VerticalScroll.Value
视为(x,y)偏移量。
答案 0 :(得分:2)
这对我有用。 当你得到你的Y按钮/文本框等时:
relativeControlTop = theControl.Top - thePanel.AutoScrollPosition.Y;
设置顶部时执行:
relativeControlTop = theControl.Top + thePanel.AutoScrollPosition.Y;
希望这有助于。
答案 1 :(得分:0)
不确定它是否对您的情况有所帮助,但我认为值得尝试:
如果您使用可视设计器设计Panel,我建议 使用两个面板:一个包含所有控件的全尺寸面板,其大小 便于设计;和较小的一个有预期的 物理尺寸。然后简单地添加大的一个作为唯一的孩子 较小的一个(如bottomPanel中的innerPanel)。
有关详情,请参阅此文章Article: WinForms AutoScroll Experiment。