2

アプリケーションに 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);    
}
4

3 に答える 3

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);
}
于 2012-09-02T04:26:13.273 に答える
1

このライブラリは、あなたがやりたいことができるかもしれません。

あなたの場合、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;
于 2012-08-31T13:36:48.590 に答える
1

単純にForm.Locationプロパティを使用しないでください。

相対値を増減して、必要なスライド アニメーション効果を実現します。

于 2012-08-31T12:19:17.947 に答える