如何获取WPF窗口的最小化框单击事件?
答案 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,则单击最小化按钮(?); - )