添加到具有位置的可滚动面板

Kyl*_*ven 4 .net c# user-controls panel

嘿伙计们,我用a Panel来保存控件列表(用户自定义).我添加面板的方式,我将基于Panel.Controls.Count之前添加到面板之前设置控件的位置.

comRec.Location = new Point(comRec.Location.X, panel1.Controls.Count * 25);
panel1.Controls.Add(comRec);
Run Code Online (Sandbox Code Playgroud)

现在,这很好用,看起来就像我想要的那样.但是,一旦我们达到窗口的限制,AutoScroll启用(我想要的).现在,如果用户要滚动到底部Panel,这最终会更改面板中每个控件的位置.而不是我的第一个comRec.Location(0,0),它类似于(0,-219).所以现在,当用户添加另一个comRec对象时,它会在对象之间创建巨大的间隙.

我的问题是,使用滚动条考虑位置变化并使用我的添加系统的最佳方法是什么.我假设必须做一些检查滚动条的值并使用它来确定位置.

此外,是否有更好的方式来显示控件列表?我应该使用Panel吗?

Kip*_*lov 5

看看FlowLayoutPanel控件,它正是你的意思.