我試圖在用戶嘗試在我的表單中執行非法操作時實施警告系統。這個想法是調用StatusBarFade
方法,給它一個它應該寫的參數,比那個方法顯示文本,通過改變它的顏色一秒半來閃爍,然後保持另一秒半,之後文字將消失。狀態欄中的文字閃爍
閃爍每隔一段時間工作,文本正常消失。
請注意,我知道這段代碼非常混亂,並且確實有更好的方法來做到這一點,但由於我不完全知道委託人的工作方式,我不知道如何正確使用它們。希望有人能夠解釋我做錯了什麼。無論如何,經過一些測試後,我意識到最好有兩個計時器。問題是這段代碼每隔一段時間都會起作用。
private Timer timer = new System.Timers.Timer();
private Timer timerColor = new System.Timers.Timer();
private void StatusBarFade(string ispis)
{
statusBar1AS2.Content = ispis;
int i = 0;
timerColor.Interval = 100;
timerColor.AutoReset = true;
timerColor.Elapsed += delegate(object sender, System.Timers.ElapsedEventArgs e)
{
this.Dispatcher.BeginInvoke(new Action(() =>
{
++i;
if (statusBar1AS2.Foreground == Brushes.Black)
statusBar1AS2.Foreground = Brushes.Gold;
else
statusBar1AS2.Foreground = Brushes.Black;
if (i > 15)
{
statusBar1AS2.Foreground = Brushes.Black;
i = 0;
timerColor.Stop();
}
}));
};
timerColor.Start();
timer.Interval = 3000;
timer.Elapsed += delegate(object sender, System.Timers.ElapsedEventArgs e)
{
timer.Stop();
this.Dispatcher.BeginInvoke(new Action(() => { statusBar1AS2.Content = ""; }));
};
timer.Start();
}
據我瞭解代表,每一個文本改變時我不應該添加相同的委託到timer.Elapsed事件,而是隻有一次,在構造函數,例如。問題是我不知道如何在代碼中使用計數器i
。
所以我會在創建動畫構造函數,然後更改StatusBarFade方法中的statusBar.Foreground屬性? 據我所看到的,這會閃爍一秒半的文本,然後刪除文本,將不是嗎?我需要文字閃爍1.5秒,然後在移除之前保留另一個X(大概3秒)。我可以創建一個複合動畫,或者我應該簡單地使用這個動畫結合定時器用於去除上面的代碼的文本? – user2352164
請參閱我的編輯,瞭解如何編寫您的方法的建議。 – Clemens