保存控件位置并将其加载回来

本文关键字:加载 回来 控件 位置 保存 | 更新日期: 2023-09-27 18:02:56

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

在。net中正确的方法是什么?目前,这是我保存到数据库中的X,Y:

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

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

当我加载控件时,我这样做:控制。位置=新系统。绘图。点(X, Y);

但是我认为我错过了一些东西,因为自动滚动在。net中的行为方式。有时我发现控件在加载后放错了位置(不像原来的位置)。

我想了好长一段时间了,我真的希望我能在这里找到一些信息。

保存控件位置并将其加载回来

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

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

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

我假设你想在滚动后将控件恢复到当前的视觉位置,这就是为什么你要考虑自动滚动?当你说控制被放错位置时,它们是否相互移动了,或者整个"滚动"到错误的位置?

你对数学小腹考试有把握吗?这似乎有些奇怪;我会尝试添加Location。X和AutoScrollPosition。X(或使用-AutoScrollPosition.X)

我也会检查恢复AutoScrollPosition当前为0