我有一个包含随机放置UserControls
的面板(自动滚动),我希望保存这些控件的位置并在以后加载它们,以便它们准确放置在之前的位置。
在.NET中执行此操作的正确方法是什么?目前这是我将数据库保存为X,Y:
X:Math.Abs(panel.AutoScrollPosition.X) + control.Location.X;
Y:Math.Abs(panel.AutoScrollPosition.Y) + control.Location.Y;
当我加载控件时,我做: control.Location = new System.Drawing.Point(X,Y);
但我认为我错过了一些东西,因为AutoScroll在.NET中的表现方式。有时我会在加载后发现控件放错位置(与旧位置不同)。
现在已经让我难以置信,我真的希望我能在这里找到一些信息。
答案 0 :(得分:0)
不确定您使用的所有配置,但请确保滚动条的增量步长为整数。接下来确保将控件添加回面板控件树而不是父窗体并设置位置。
答案 1 :(得分:0)
您可以使用app.config文件保存这些设置,因此当您需要它们时,您只需调用app.config中的密钥设置。
我认为没有一种正确的方法,无论你觉得它有什么好处,但是如果你要动态创建控件,你可以拥有一个现在的数据库。但是,如果只有其中几个,app.config文件将更好。
答案 2 :(得分:0)
我认为您想在滚动后将控件恢复到当前的视觉位置,这就是您考虑自动滚动的原因?当你说控件放错位置时,它们是否相对移动,或者整个“滚动”到错误的位置?
你确定Math.Abs吗?这看起来有点奇怪;我会尝试只添加Location.X和AutoScrollPosition.X(或使用-AutoScrollPosition.X)
我还会检查还原AutoScrollPosition当前为0。