Skip Aero Window动画

时间:2012-11-12 07:04:51

标签: c# windows winforms animation

如何以编程方式在Aero下禁用窗口的“打开”动画?

打开新表单时,它会“弹出”(淡入+轻微缩放转换)。 我想停止这个动画并立即显示窗口。

我已经尝试将Form的Location属性设置为屏幕外的某个位置,然后调用Show(),然后将其移动到正确的位置。 但这没有用,动画将继续。

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

我不想全局禁用开放/关闭/最小化/最大化动画! 我只是想跳过窗口的“开窗”动画。

我已经在Form.Show()之后直接使用单个和多个调用ShowWindow(...)。但无论我传递什么参数,都不会中止开场动画。

4 个答案:

答案 0 :(得分:3)

我知道了!在一些人试图使用ShowWindow之后,BorderStyles找到了我的确切解决方案:

  1. 将表单的初始“FormBorderStyle”属性更改为以下之一:
    • FixedToolWindow
    • SizeableToolWindow
  2. 将事件处理程序添加到Forms“已显示”事件中。
  3. 在eventhandler中,将FormBorderStyle更改为“Sizeable”(或任何其他)。
  4. 现在的诀窍是“none”和“* toolwindow”bordertyles会抑制该表单的打开/弹出动画。然后,一旦显示表单,就会更改bordertyle,为其提供原始功能(控制栏中的图标,最小化/最大化按钮等...)

    编辑:对于每个可能都想尝试此操作的人,我必须指出,当使用PInvoke时,此可以将与窗口的实际大小相关联命令。 如果您依赖窗口的大小是正确的,请确保在完成此操作后将窗口大小调整为其预期大小。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

所以这就是诀窍:

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

我仅在Windows 8中测试过它

答案 3 :(得分:0)

您可以更改之前和之后的样式,这样可以防止淡出动画。

        this.FormBorderStyle = FormBorderStyle.Sizable;
        this.Show();

        // Do whatever

        this.FormBorderStyle = FormBorderStyle.Sizable;
        this.Show();