6

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

问题是如果用户将面板滚动到某个(x,y)然后按下“使可见”按钮,按钮的新(x,y)位置是根据面板的当前(x,y)位置计算的 -不是从面板的顶部(0,0)。

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

在此处输入图像描述

4

2 回答 2

2

This is what worked for me. When you get the Y of you button/textbox etc do:

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

When you set the top do:

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

Hope this Helps.

于 2012-11-12T16:38:14.047 回答
0

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

如果您要使用 Visual Designer 设计面板,我建议 使用两个面板:一个包含所有控件的全尺寸面板,其大小便于设计;和具有预期物理尺寸的较小的。然后只需将大的添加为较小的唯一的孩子(如底部面板中的内部面板)。

有关详细信息,请参阅本文文章:WinForms AutoScroll 实验

于 2012-11-09T20:42:49.883 回答