类似于WindowState的RestoreBounds

时间:2010-07-22 13:40:09

标签: .net size windowstate

我的应用程序已开始最小化。

我可以将RestoreBounds设置为在用户恢复时窗口恢复的大小。

但是,如果表单应该恢复到最大化或正常状态,我该怎么设置?默认为正常。我希望有类似RestoreWindowState的东西。

我可以用某种方式使用API​​吗?

2 个答案:

答案 0 :(得分:0)

你不能自己添加和管理这个属性吗?

将属性添加到表单中 覆盖OnClientSizeChanged并检查窗口状态是否已从Minimized更改 如果是这样,请将WindowState设置为您的属性值 设置一个标志,以便只进行一次逻辑。

答案 1 :(得分:0)

根据我的经验,Window.RestoreBounds将始终为您提供窗口的最终“正常”尺寸,而Window.WindowState将始终为您提供窗口的最终状态(最大,最小,正常)。无论您处于什么状态,都可以随时保存RestoreBounds和WindowState并手动设置窗口尺寸/状态。

这是我的操作方式(而且我知道还原并不纯真的,但我并不在乎):

private class WindowStatus
{
    private WindowState state;
    private Rect restoreBounds;

    public WindowStatus(Window window)
    {
        state = window.WindowState;
        restoreBounds = window.RestoreBounds;
    }

    public void Restore(Window window)
    {
        window.WindowState = state;
        window.Height = restoreBounds.Height;
        window.Width = restoreBounds.Width;
        window.Left = restoreBounds.Left;
        window.Top = restoreBounds.Top;                      
    }

}