滚动面板时,在winform面板中绘制一个按钮

时间:2012-11-09 14:48:13

标签: c# winforms scroll panel

在面板中,我绘制控件,例如按钮/文本框,位于面板中的起始位置(0,0)。这些控件在开始时是不可见的和禁用的。我在面板外面有一个按钮,按下时可以看到这些按钮/文本框,并将它们放置在面板中的新位置。

问题是如果用户将面板滚动到某些(x,y),然后按下'make visible'按钮,按钮的新(x,y)位置将从当前(x,y)位置计算出来。面板 - 不是从面板的顶部(0,0)。

我想知道这是否是面板的正确行为,为了解决这个问题,我需要在重新定位按钮时将this.VerticalScroll.Value视为(x,y)偏移量。

enter image description here

2 个答案:

答案 0 :(得分:2)

这对我有用。 当你得到你的Y按钮/文本框等时:

relativeControlTop = theControl.Top - thePanel.AutoScrollPosition.Y;

设置顶部时执行:

relativeControlTop = theControl.Top + thePanel.AutoScrollPosition.Y;

希望这有助于。

答案 1 :(得分:0)

不确定它是否对您的情况有所帮助,但我认为值得尝试:

  

如果您使用可视设计器设计Panel,我建议   使用两个面板:一个包含所有控件的全尺寸面板,其大小   便于设计;和较小的一个有预期的   物理尺寸。然后简单地添加大的一个作为唯一的孩子   较小的一个(如bottomPanel中的innerPanel)。

有关详情,请参阅此文章Article: WinForms AutoScroll Experiment