0

我有一个包含随机放置的面板(带有自动滚动)UserControls,我想保存这些控件的位置并在以后将它们加载回来,以便它们准确地放置在它们之前的位置。

在 .NET 中执行此操作的正确方法是什么?目前这是我保存到数据库中的 X,Y:

X:Math.Abs(panel.AutoScrollPosition.X) + control.Location.X;

是的:Math.Abs(panel.AutoScrollPosition.Y) + control.Location.Y;

当我加载控件时,我会这样做: control.Location = new System.Drawing.Point(X, Y);

但我认为我错过了一些东西,因为 AutoScroll 在 .NET 中的行为方式。有时我在加载后发现控件放错了位置(不像它们的旧位置)。

想了很久,真希望能在这里找到一些信息。

4

3 回答 3

0

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

你确定 Math.Abs​​ 吗?这似乎有些奇怪。我会尝试只添加 Location.X 和 AutoScrollPosition.X(或使用 -AutoScrollPosition.X)

我还会在恢复时检查 AutoScrollPosition 当前为 0。

于 2013-03-08T22:09:17.697 回答
0

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

于 2013-03-08T20:49:54.223 回答
0

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

我认为没有合适的方法,无论您感觉更好,它都可以工作,但是如果您要动态创建控件,则可以像现在一样拥有一个数据库。但是,如果只有几个,app.config 文件会更好。

于 2013-03-08T20:56:23.997 回答