如何以编程方式在Aero下禁用窗口的“打开”动画?
打开新表单时,它会“弹出”(淡入+轻微缩放转换)。 我想停止这个动画并立即显示窗口。
我已经尝试将Form的Location属性设置为屏幕外的某个位置,然后调用Show(),然后将其移动到正确的位置。 但这没有用,动画将继续。
也许我可以设置一些隐藏的属性?
我不想全局禁用开放/关闭/最小化/最大化动画! 我只是想跳过窗口的“开窗”动画。
我已经在Form.Show()之后直接使用单个和多个调用ShowWindow(...)。但无论我传递什么参数,都不会中止开场动画。
答案 0 :(得分:3)
我知道了!在一些人试图使用ShowWindow之后,BorderStyles找到了我的确切解决方案:
现在的诀窍是“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();