最小化/恢复窗口时是否可以禁用动画?

当我单击Windows窗体应用程序中的最小化按钮时,我不希望它执行经典的Windows最小化动画(窗口转到任务栏)。

据我所知,没有Minimize事件,我可以使用Resize,但我不知道如何检测我是否点击了最小化按钮。 我尝试使用if ( WindowState = FormWindowState.Minimized ) { ... } ,但无论如何都会动画并在之后触发代码。

有没有办法检测最小化按钮点击? 有没有办法禁用动画或是由Windows设置触发?

这有效,但它对任务栏按钮有一个令人不快的副作用。 我想不出另一种方式,甚至无法从SystemParametersInfo()访问动画。

 public partial class Form1 : Form { public Form1() { InitializeComponent(); } protected override void WndProc(ref Message m) { // Catch WM_SYSCOMMAND, SC_MINIMIZE if (m.Msg == 0x112 && m.WParam.ToInt32() == 0xf020) { this.Hide(); this.WindowState = FormWindowState.Minimized; this.BeginInvoke(new Action(() => this.Show())); return; } base.WndProc(ref m); } } 

更新:通过使用DWMWA_TRANSITIONS_FORCEDISABLED属性对DwmSetWindowAttribute()进行设置,可以在Aero上禁用动画。 看到这个答案 。