3

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

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

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

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

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

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

4

4 回答 4

3

我懂了!在尝试了 ShowWindow, BorderStyles 之后,我找到了我的确切解决方案:

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

现在的诀窍是“none”和“*toolwindow”边框样式将抑制该表单的打开/弹出动画。然后,一旦显示表单,边框样式就会更改,赋予其原始功能(控制栏中的图标,最小化/最大化按钮等......)

编辑:对于每个可能也想尝试这个的人,我必须指出这个能够使用 PInvoke 命令完成后,将与窗口的实际大小有关。如果您依赖正确的窗口大小,请务必在完成此操作后将窗口大小调整为预期大小。

于 2012-11-12T10:28:20.760 回答
0

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

于 2012-11-12T07:17:25.540 回答
0

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

所以这里是诀窍:

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

我只在 Windows 8 中测试过

于 2013-04-11T06:31:52.787 回答
0

您可以像这样在前后更改样式,这将防止淡出动画。

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

        // Do whatever

        this.FormBorderStyle = FormBorderStyle.Sizable;
        this.Show();
于 2016-06-02T19:41:31.093 回答