嘿伙计们,我使用Panel
来保存控件列表(用户自定义)。我添加面板的方式是,在将其添加到面板之前,我将基于Panel.Controls.Count
设置控件的位置。
comRec.Location = new Point(comRec.Location.X, panel1.Controls.Count * 25);
panel1.Controls.Add(comRec);
现在,这很好用,看起来就像我想要的那样。但是,一旦我们达到窗口限制,AutoScroll
启用(我想要的)。现在,如果用户要滚动到Panel
的底部,这最终会更改面板中每个控件的位置。而不是我的第一个comRec.Location
(0,0),它类似于(0,-219)。所以现在,当用户添加另一个comRec
对象时,它会在对象之间创建一个巨大的间隙。
我的问题是,使用滚动条考虑位置变化并使用我的添加系统的最佳方法是什么。我假设必须检查滚动条的值并使用它来确定位置。
此外,是否有更好的方式来显示控件列表?我应该使用Panel
吗?
答案 0 :(得分:5)
看看FlowLayoutPanel控件,它正是你的意思。
答案 1 :(得分:1)
您可以在层次结构中添加其他面板:
Outer panel (scrollable)
Inner panel (not scrollable, resize it whenever you add a control)
User Defined Control 1
User Defined Control 2
User Defined Control 3
User Defined Control 4
...
这样,您的附加控件位置将相对于其直接父级,即非滚动面板。
答案 2 :(得分:1)
如果添加多个控件,请在添加控件时尝试暂停面板的布局:
panel1.SuspendLayout();
// Add controls ...
panel1.ResumeLayout();
这有助于我在类似的情况下,用户可以动态更改现有控件的可见性。