Я пытаюсь показать текст в метке в wpf при нажатии кнопки, а затем скрыть через пару секунд. Я знаю, что есть ответы на этот вопрос, но моя проблема в другом.
Я использовал эти 2 способа скрытия метки:
Один
//When the button is pressed
label_plus.Visibility = System.Windows.Visibility.Visible;
DispatcherTimer timer = new DispatcherTimer();
timer.Interval = new TimeSpan(0, 0, 5);
timer.Tick += timer_Tick; //Or, timer.Tick += new EventHandler(timer_Tick);
timer.Start();
// The timer event handler
void timer_Tick(object sender, EventArgs e)
{
label_plus.Visibility = System.Windows.Visibility.Collapsed;
}
Два
//Button pressed
label_plus.Content = label_plus1.Content = "+";
DispatcherTimer timer = new DispatcherTimer();
timer.Interval = new TimeSpan(0, 0, 5);
timer.Tick += (o, args) => label_plus.Content = "";
timer.Start();
Примечание. Второй почти такой же, за исключением строки «timer.tick += (o, args)». Я получил этот код из: Здесь. Это был код приложения Form, поэтому я просто попробовал эту часть, и она сработала.
Первый код я получил непосредственно из здесь.
Проблема в том, что и в первый, и во второй раз это работает довольно хорошо. И, возможно, в третий раз. Но после этого я чувствую, что секунда таймера уменьшается. После 2/3 раз он прячется в течение 3/4 секунд, после чего едва остается на 1 секунду или меньше.
Есть ли лучший способ сделать это или избавиться от этой проблемы? Я новичок в Visual Studio.
Обновление: Это тоже хорошо работает, но постоянно повторяется. Любой способ остановиться после одного процесса?
var timer = new System.Timers.Timer();
timer.Elapsed += timer_Tick;
timer.Interval = 3000;
timer.Enabled = true;
timer.Start();
void timer_Tick(object sender, EventArgs e)
{
//label_plus.Visibility = label_plus1.Visibility = System.Windows.Visibility.Collapsed;
MessageBox.Show("Show some data");
}
Заранее спасибо.
((Timer)sender).Enabled = false;
в обработчике. Кроме того, попробуйте создать только один таймер и сохранить его, вместо того, чтобы создавать новые таймеры каждый раз, когда вы хотите отображать короткую продолжительность. - person Ben Voigt   schedule 02.06.2015