我正在为我的应用程序使用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);
}
使用您现有的模式 - OnClosed + AW_HIDE 反向进行。
protected override void OnClosing(CancelEventArgs e)
{
AnimateWindow(this.Handle, 500, AW_ACTIVATE | AW_SLIDE | AW_HOR_NEGATIVE | AW_HIDE);
base.OnClosing(e);
}
为什么不简单地使用 Form.Location 属性。
增加或减少它的相对值以实现您想要的滑动动画效果。
这个库也许可以做你想做的事。
来自站点的示例代码,在您的情况下,可以将其放置在 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;