记住窗口位置,大小和状态[在Win +箭头对齐上](带多个显示器)

时间:2015-01-08 10:44:58

标签: c# wpf window application-settings windowstate

在我们的项目中,我们保存了窗口大小,位置和最小化/最大化设置,因此我们可以在重新打开窗口时以完全相同的点和大小打开窗口。所有这一切都运行得很好,使用了这篇文章底部的Window-Behavior - 类。

问题是,当我们使用Win-button +箭头时;这会将屏幕与屏幕一侧对齐,但这并未正确保存在行为中。相反,它在我使用Win +箭头对齐之前保存了屏幕的位置和大小,这就是它再次打开的位置。

我尝试在Left方法中使用Window的TopActualWidthActualHeightSaveWindowState(注意:{{1在这个方法中是Window。)但AssociatedObjectLeft似乎关闭了大约20-40像素,并使用Top保存了Right和Left,{{ 1}}和当前屏幕宽度/高度(当使用多个显示器时)也有点痛苦。

那么,当用户使用Win +箭头对齐Window然后关闭它时,有没有办法在窗口设置中保存正确的位置和大小?

ActualWidth

ActualHeight

1 个答案:

答案 0 :(得分:0)

您是否尝试过System.Windows.Window实例而不是p/invoke? 我使用两个简单的方法来保存和设置窗口位置使用这个类,并且它可以在不同的应用程序,架构,客户端,Windows操作系统上完美地工作,有或没有Aero ......

void SetWindowPosition()
{
    this.Left = Settings.Default.WindowPositionLeft;
    this.Top = Settings.Default.WindowPositionTop;
}
void SaveWindowPosition()
{
    Settings.Default.WindowPositionTop = this.Top;
    Settings.Default.WindowPositionLeft = this.Left;
    Settings.Default.Save();
}

或者我错过了什么?