我建议通过在那里启动一个计时器来处理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
}
希望对您有所帮助。