Я бы предложил обработать событие MouseDown
, запустив там таймер.Если сработало событие MouseUp
, таймер необходимо остановить.Для этого вы можете использовать DispatcherTimer
.Затем вы можете настроить время, после которого должно быть запущено событие Timer_Tick
, где вы можете выполнить действие, которое хотели бы выполнить.Чтобы избежать проблем с всплывающими событиями MouseDown
и MouseUp
, я бы предложил добавить два обработчика в конструктор окна вместо добавления их в XAML (по крайней мере, события не сработали в моем примере кода, поэтому яизменил это) с помощью
button1.AddHandler(FrameworkElement.MouseDownEvent, new MouseButtonEventHandler(button1_MouseDown), true);
button1.AddHandler(FrameworkElement.MouseUpEvent, new MouseButtonEventHandler(button1_MouseUp), true);
Кроме того, вам нужно установить там таймер:
Добавить поле в класс окна:
DispatcherTimer timer = new DispatcherTimer();
и установитьустановите таймер на то время, которое вы хотите подождать, пока не сработает событие Timer_Tick
(также в конструкторе окна):
timer.Tick += new EventHandler(timer_Tick);
// time until Tick event is fired
timer.Interval = new TimeSpan(0, 0, 1);
Тогда вам нужно только обработать события, и вы сделали:*
private void button1_MouseDown(object sender, MouseButtonEventArgs e) {
timer.Start();
}
private void button1_MouseUp(object sender, MouseButtonEventArgs e) {
timer.Stop();
}
void timer_Tick(object sender, EventArgs e) {
timer.Stop();
// perform certain action
}
Надеюсь, это поможет.