如何使用c#使用AnimateWindow函数的滑动效果显示和隐藏表单?

时间:2012-08-31 12:16:30

标签: c# winforms

我正在为我的应用程序使用Windows窗体。我在点击面板上加载另一个表单。现在我想显示打开和关闭表单的滑动效果。我可以在打开时添加负滑动效果,因为表单通过重载形式的OnLoad事件从右向左打开。但是我无法使用AnimateWindow函数隐藏具有正幻灯片效果的表单。有没有办法做到这一点?

这是我用来显示表格的内容:

protected override void OnLoad(System.EventArgs e)
{
  NativeMethods.AnimateWindow(this.Handle, 500, 
                  AW_ACTIVATE | AW_SLIDE | AW_HOR_NEGATIVE);

  base.OnLoad(e);    
}

3 个答案:

答案 0 :(得分:2)

使用现有模式 - OnClosing + AW_HIDE反向执行。

protected override void OnClosing(CancelEventArgs e)
{
   AnimateWindow(this.Handle, 500, AW_ACTIVATE | AW_SLIDE | AW_HOR_NEGATIVE | AW_HIDE);

   base.OnClosing(e);
}

答案 1 :(得分:1)

为什么不使用简单的Form.Location 属性。

增加或减少它的相对值,以实现您想要的滑动动画效果。

答案 2 :(得分:1)

This库可能能够做你想做的事。

来自网站的示例代码,在您的情况下,可以放在Closing事件中。

Transition t = new Transition(new TransitionType_EaseInEaseOut(2000));
t.add(pictureBox1, "Left", 300);
t.add(pictureBox1, "Top", 200);
t.run();

完成动画后,您可以使用TransitionCompletedEvent事件隐藏表单。 (或者您可以为表单的Opacity属性设置动画)

public event EventHandler<Args> TransitionCompletedEvent;