0

スプラッシュ スクリーン用に作成した Windows フォームがあります。このフォームにタイマーを追加し、有効にして、コードに以下の行を追加しました。

     private void timer1_Tick(object sender, EventArgs e)
    {
        this.Opacity -= 0.01;

        if (this.Opacity <= 0)
        {
            this.Close();
        }   
    }

スプラッシュ スクリーンがフェードアウトしますが、問題は、5 秒間 100% 表示 (不透明度 = 1.0) にしたいことです。その後、閉じるまでフェードアウトし始めます。

コードの先頭にこの行を追加しようとしました:

     Using System.Threading;

timer1 を無効にしてから、フォーム読み込みイベントに以下の行を追加しました

      Thread.Sleep(5000);
      timer1.Enabled = true;

しかし、残念ながらそれは私にとってはうまくいきません。これにより、アプリケーションはスプラッシュ画面を表示する前に 5 秒間待機し、それを表示してすぐにフェードします。

スプラッシュ画面を 5 秒間表示してからフェードアウトするにはどうすればよいですか?

どんな助けでもいただければ幸いです

4

2 に答える 2

1

最初にタイマーの間隔を 5000 に設定します。

private void timer1_Tick(object sender, EventArgs e) 
{ 
    timer1.Enabled = false;
    timer1.Tick -= timer1_Tick;
    timer1.Tick += FadeOut;
    timer1.Interval = /* whatever your original interval was */
    timer1.Enabled = true;
} 

private void FadeOut(object sender, EventArgs e) 
{ 
    this.Opacity -= 0.01; 

    if (this.Opacity <= 0) 
    { 
        this.Close(); 
    }    
} 

これにより、タイマーは最初に 5 秒遅延し、次にタイマーを再利用して不透明度の変更を実行します。

Thread.Sleep() 呼び出しがアプリケーションをブロックしていた場合は、別の UI スレッドでスプラッシュ スクリーンを実行していないことを示しています。通常、アプリケーションの初期化と並行してスプラッシュ スクリーンを表示する必要があります。

于 2012-04-14T00:26:15.033 に答える
0

1 つの方法は、その 5 秒間の不透明度を制御する別の変数を追加することmyOpacityです6

private void timer1_Tick(object sender, EventArgs e)
{
    this.myOpacity -= 0.01;
    if (this.myOpacity <= 0)
        this.Close();
    else
        if (this.myOpacity <= 1)
            this.Opacity -= this.myOpacity;
}

そうすれば、最初の 5 秒間 ( myOpacity6 から 1 まで) は何も変わりません。そして、その最後の 1 秒でフェードアウトします。

于 2012-04-14T00:25:30.130 に答える