C#如何使用客户坐标定位父表单?

时间:2015-04-30 00:48:35

标签: c# forms winapi properties coordinate-systems

我有一个主窗体(应用程序的父窗体),使用p / Invoke SetWindowPos设置为后面。 SetWindowPos要求窗口的X,Y坐标位于客户坐标中。

当我启动程序时,窗口显示在屏幕中央。然后我移动窗口并将新位置保存到绑定到Properties.Settings.Default.frmMainLocation属性的frmMain.Location

我停止程序然后重新启动它 - 表单又回到原来的中心位置。

如何设置SetWindowPos以在X,Y坐标处定位窗口从表格的Location.XLocation.Y坐标派生?

1 个答案:

答案 0 :(得分:1)

如果您将属性保存到某个点,则可以设置窗口位置,如下所示:

Point pos = new Point
    (
        Properties.Settings.Default.posX,
        Properties.Settings.Default.posY
    );

this.Location = pos;

我在Form_Load()事件的形式Form.Load()方法中设置了这个,其中包含几组不同的简单坐标,它改变了每次加载时显示表单的位置。它只是跳跃,跳过和跳跃,让它加载来自Properties.Settings.Default的坐标,正如我在示例中所示。