【发布时间】:2010-03-22 13:16:06
【问题描述】:
我有一个带有 MDI 表单和一些子表单的 Windows 应用程序。 我需要保存子窗体的位置,然后再次打开时恢复。
如何在 C# 中做到这一点?
另外,我需要检查子表单的标题栏是否没有隐藏在 mdi 表单下(例如,标题栏可能会因为 mdi 表单的菜单而被隐藏)。如果是这种情况,那么我需要巧妙地设置位置。
提前谢谢...
【问题讨论】:
我有一个带有 MDI 表单和一些子表单的 Windows 应用程序。 我需要保存子窗体的位置,然后再次打开时恢复。
如何在 C# 中做到这一点?
另外,我需要检查子表单的标题栏是否没有隐藏在 mdi 表单下(例如,标题栏可能会因为 mdi 表单的菜单而被隐藏)。如果是这种情况,那么我需要巧妙地设置位置。
提前谢谢...
【问题讨论】:
查看这篇 CodeProject 文章:Restore Form Position and Size in C#
它的要点是您必须获取表单的大小和位置并将其保留在项目设置中。您必须稍微调整一下以适应您的需要(确保表单适合父窗口的边界等)。
【讨论】:
您可以使用表单的 .Bounds 属性来获取表单的位置和大小。创建表单时,您设置 .Bounds 属性,当表单关闭时,您可以记录位置并将其保存到注册表或文件中。设置 .Bounds 属性时,您需要确保坐标对当前桌面大小有效,以防用户更改分辨率或出现问题 - 您不希望表单显示在桌面之外。您可以使用 Screen.PrimaryScreen.WorkingArea 获取当前桌面尺寸,然后比较保存的表单边界的坐标。如果要手动设置位置,还需要将表单的 StartPosition 属性设置为 Manual。
【讨论】: