跳过Aero窗口animation

如何禁用Aero编程下的“打开”窗口animation?

当打开一个新的窗体时,它会“popup”(淡入淡出+轻微缩放转换)。 我想停止这个animation,并立即显示窗口。

我已经尝试将窗体的位置属性设置为离屏,然后调用Show(),然后将其移动到正确的位置。 但是这并没有帮助,animation将继续。

也许有一些我可以设置的隐藏的属性?

我不想全局禁用打开/closures/最小化/最大化animation! 我只是想跳过窗口的“窗口打开”animation。

我已经在Form.Show()之后直接调用了单个和多个调用ShowWindow(…)。 但是不pipe我通过什么参数,都不会中止开场animation。

我懂了! 经过一番尝试与ShowWindow,BorderStyles我发现我的确切的解决方案:

  1. 将表单的初始“FormBorderStyle”属性更改为以下之一:
    • 没有
    • FixedToolWindow
    • SizeableToolWindow
  2. 将事件处理程序添加到窗体“显示”事件。
  3. 在事件处理程序中,将FormBorderStyle更改为“Sizeable”(或任何其他)。

现在的技巧是“none”和“* toolwindow”边框将禁止该窗体的打开/弹出动画。 一旦表单被显示,边框被改变,赋予它原有的功能(控制栏中的图标,最小化/最大化按钮等)

编辑 :对于每个人也可能想尝试这一点,我必须指出这一点 能够 当使用PInvoke命令完成时,将会与实际的窗口大小相匹配。 如果您依赖的窗口大小是正确的,请务必在完成后调整窗口的大小。

这是Windows视觉效果的一部分,可以使用SystemParametersInfo方法进行调整。

我发现动画只在第一次显示表单时才会发生。

所以这是一个窍门:

var form = new Form(); form.Show(); form.Hide(); form.Show(); 

我只在Windows 8中测试过

你可以改变之前和之后的风格,就像这样,这将阻止淡出动画。

  this.FormBorderStyle = FormBorderStyle.Sizable; this.Show(); // Do whatever this.FormBorderStyle = FormBorderStyle.Sizable; this.Show();