获取WPF窗口的最小化框

时间:2009-06-02 11:01:00

标签: c# .net c#-3.0 wpf-controls

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

3 个答案:

答案 0 :(得分:28)

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

  

窗口的WindowState时发生   财产变化。

帮助说它只支持.NET 3.0和Vista下的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"

答案 1 :(得分:1)

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

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

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

}

它会有所帮助......

答案 2 :(得分:0)

对不起,这不是关于WPF,因为我没有和WPF一起工作。但是,您可以做的另一件事是在Form的Resized事件期间检查Windowstate属性。如果它等于FormWindowState.Minimized,则单击最小化按钮(?); - )