问题起源
起源于想在用户单击一个button时实现如下效果:
(1)当用户单击时,发出一个指令A。
(2)如果用户将button按下,保持一段时间(如200ms)以上时,则发出指令B。
随后,再次将button按键抬起时,发出指令C。
这种效果类似于汽车的车窗的开启/关闭的按钮,当轻轻的扳一下按钮(扳完立马松开)时,他会一直开或关,指导你再次轻轻的扳一下才会停止;而当你扳住按钮保持,则车窗一直动,当你松开时,车窗停止运动。
实现方式
响应Button的两个事件,PreviewMouseLeftButtonDown和PreviewMouseLeftButtonUp。
<Button context = "Push" PreviewMouseLeftButtonDown="MouseLeftButtonDown" PreviewMouseLeftButtonUp="MouseLeftButtonUp" />
具体代码如下:
private void MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
var element = (FrameworkElement)sender;
var timer = new System.Timers.Timer(200);
timer.AutoReset = false;
timer.Elapsed += new Ela