1

基本的にスプラッシュのように起動時のこの画面がありますが、そうではありません。タイマーをかけました。数秒後、ウィンドウが消え、ログインが表示される必要があります。新しいフォームを表示するところまではありますが、ループしています。それは何度も何度も新しいフォームを開き続けます!これが私のコードです。私はこれをどこで間​​違っているのですか?

タイマー

int count;
count = 0;

public Windowsplash()
{
    System.Windows.Threading.DispatcherTimer dispatcherTimer = new System.Windows.Threading.DispatcherTimer();

    dispatcherTimer.Interval = new TimeSpan(0,0,0,0,2500);
    dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
    dispatcherTimer.Start();
}
private void dispatcherTimer_Tick(object sender, EventArgs e)
{
    System.Windows.Threading.DispatcherTimer dispatcherTimer = sender as System.Windows.Threading.DispatcherTimer;

    dispatcherTimer.Stop();
    MainWindow _new = new MainWindow();
    _new.Show();
    this.Close();
}

タイマーを止めて、新しいウィンドウがずっと開いていないようにしたいです!ありがとう!

PS:私はそれを今持っているものに編集しました

4

4 に答える 4

2

_Tickハンドラーで新しいDispatcherTimerインスタンスを作成しています。そして、そのインスタンスを停止します。古い元のインスタンスは実行を続けます。

この行をハンドラーから削除します。

System.Windows.Threading.DispatcherTimer dispatcherTimer = new System.Windows.Threading.DispatcherTimer();
于 2012-08-16T12:23:46.377 に答える
1

IvoTopsの回答を改善するために、コンストラクターに対してローカルでタイマーを作成しているように見えるため、ティックハンドラーでアクセスできなくなります。ティックイベントハンドラーの最初の行を次のように変更します。

System.Windows.Threading.DispatcherTimer dispatcherTimer
    = sender as System.Windows.Threading.DispatcherTimer;

このようにして、新しいタイマーを作成する代わりに、起動された元のタイマーを取得します。

于 2012-08-16T12:27:44.247 に答える
0

DispatcherTimerループ内で毎回新しいものを作成する代わりにsender、元のを再利用しますDispatcherTimer。あなたの問題は、古いタイマーがそれ以上の相互作用なしに実行し続けることです。

于 2012-08-16T12:24:44.437 に答える
0
int count; 
count = 0; 

public Windowsplash 

    System.Windows.Threading.DispatcherTimer dispatcherTimer = new System.Windows.Threading.DispatcherTimer();
    dispatcherTimer.Interval = new TimeSpan(0,0,0,500); 
    dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick); 
    dispatcherTimer.Start(); 

private void dispatcherTimer_Tick(object sender, EventArgs e) 
{ 
    System.Windows.Threading.DispatcherTimer dispatcherTimer = sender as System.Windows.Threading.DispatcherTimer; 

        dispatcherTimer.Stop(); 
        MainWindow _new = new MainWindow(); 
        _new.Show(); 
        this.Close(); 
} 
于 2012-08-22T06:38:38.943 に答える