保存控件位置并加载回来

时间:2013-03-08 20:11:02

标签: c# .net winforms controls panel

我有一个包含随机放置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中的表现方式。有时我会在加载后发现控件放错位置(与旧位置不同)。

现在已经让我难以置信,我真的希望我能在这里找到一些信息。

3 个答案:

答案 0 :(得分:0)

不确定您使用的所有配置,但请确保滚动条的增量步长为整数。接下来确保将控件添加回面板控件树而不是父窗体并设置位置。

答案 1 :(得分:0)

您可以使用app.config文件保存这些设置,因此当您需要它们时,您只需调用app.config中的密钥设置。

我认为没有一种正确的方法,无论你觉得它有什么好处,但是如果你要动态创建控件,你可以拥有一个现在的数据库。但是,如果只有其中几个,app.config文件将更好。

答案 2 :(得分:0)

我认为您想在滚动后将控件恢复到当前的视觉位置,这就是您考虑自动滚动的原因?当你说控件放错位置时,它们是否相对移动,或者整个“滚动”到错误的位置?

你确定Math.Abs​​吗?这看起来有点奇怪;我会尝试只添加Location.X和AutoScrollPosition.X(或使用-AutoScrollPosition.X)

我还会检查还原AutoScrollPosition当前为0。