16

如何获取 WPF 窗口的最小化框单击事件?

4

3 回答 3

28

有一个名为StateChangedwhich (来自帮助)的事件看起来可能会做你想做的事。

在窗口的 WindowState 属性更改时发生。

帮助说它仅在 Vista 下的 .NET 3.0 和 3.5 中受支持,但我刚刚在 XP 上尝试过它,它会在窗口最小化、最大化和恢复时触发。但是,根据我的测试,它会在状态更改后触发,因此如果您想在窗口最小化之前执行某些操作,这可能不是您需要的方法。

您必须检查实际状态以确保它是正确的。

    private void Window_StateChanged(object sender, EventArgs e)
    {
        switch (this.WindowState)
        {
            case WindowState.Maximized:
                MessageBox.Show("Maximized");
                break;
            case WindowState.Minimized:
                MessageBox.Show("Minimized");
                break;
            case WindowState.Normal:
                MessageBox.Show("Normal");
                break;
        }
    }

显然,如果我只是打印出我将使用的状态this.WindowState.ToString();)

Visual Studio 应将以下内容添加到窗口的 XAML 定义中:

StateChanged="Window_StateChanged"
于 2009-06-02T11:13:20.757 回答
1

除了Shoban的回答......

您可以使用 Window 的 Deactivated 事件,甚至可以使用 StateChange 事件,如下所示

private void Window_Deactivated(object sender, EventArgs e)
{
      if(this.WindowState== WindowState.Minimized)
           // Do your stuff

}

这会有所帮助....

于 2009-06-02T11:14:26.730 回答
0

抱歉,这与 WPF 无关,因为我对 WPF 的工作不多。但是您可以做的另一件事是在窗体的 Resized 事件期间检查 Windowsstate 属性。如果它等于 FormWindowState.Minimized 然后单击最小化按钮(?);-)

于 2009-06-02T11:05:57.620 回答