C# 如何使用客户端坐标定位父窗体?
C# How to Position a Parent Form using Client Coordinates?
我有一个主窗体(应用程序的父窗体),它使用 p/Invoke SetWindowPos
设置在后面。 SetWindowPos
要求 window 的 X、Y 坐标,它们位于 Client Coordinates.
当我启动程序时,window 显示在屏幕中央。然后我移动 window 并将新位置保存到绑定到 frmMain.Location
属性.
的 Properties.Settings.Default.frmMainLocation
我停止程序然后重新启动它 - 表格又回到了原来的中心位置。
如何设置 SetWindowPos 以将 window 定位在从表单的 Location.X
、Location.Y
坐标派生的 X、Y 坐标处?
如果你把你的属性保存到一个点,你可以像这样设置 window 位置:
Point pos = new Point
(
Properties.Settings.Default.posX,
Properties.Settings.Default.posY
);
this.Location = pos;
我在表单的 Form_Load()
方法中为 Form.Load()
事件设置了此方法,其中包含几组不同的简单坐标,它每次都更改了表单在加载时显示的位置。正如我在示例中所示,只需跳跃、跳跃和跳跃即可从 Properties.Settings.Default
加载坐标。
实际上,让它工作有点麻烦。
当应用程序启动时,您需要 SetWindowPos
没有 SWP_NOMOVE
标志
然后 SetWindowPos
设置 SWP_MOVE
标志
然后当你想改变位置时重复应用程序启动过程。
我有一个主窗体(应用程序的父窗体),它使用 p/Invoke SetWindowPos
设置在后面。 SetWindowPos
要求 window 的 X、Y 坐标,它们位于 Client Coordinates.
当我启动程序时,window 显示在屏幕中央。然后我移动 window 并将新位置保存到绑定到 frmMain.Location
属性.
Properties.Settings.Default.frmMainLocation
我停止程序然后重新启动它 - 表格又回到了原来的中心位置。
如何设置 SetWindowPos 以将 window 定位在从表单的 Location.X
、Location.Y
坐标派生的 X、Y 坐标处?
如果你把你的属性保存到一个点,你可以像这样设置 window 位置:
Point pos = new Point
(
Properties.Settings.Default.posX,
Properties.Settings.Default.posY
);
this.Location = pos;
我在表单的 Form_Load()
方法中为 Form.Load()
事件设置了此方法,其中包含几组不同的简单坐标,它每次都更改了表单在加载时显示的位置。正如我在示例中所示,只需跳跃、跳跃和跳跃即可从 Properties.Settings.Default
加载坐标。
实际上,让它工作有点麻烦。
当应用程序启动时,您需要 SetWindowPos
没有 SWP_NOMOVE
标志
然后 SetWindowPos
设置 SWP_MOVE
标志
然后当你想改变位置时重复应用程序启动过程。