问题起源
起源于想在用户单击一个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 ElapsedEventHandler((o, ex) => element.Dispatcher.Invoke(new Action(() =>
{
///发出指令B,长时间按下的事件
})));
timer.Start();
element.Tag = timer;
}
private void MouseLeftButtonUp(object sender, MouseBu

最低0.47元/天 解锁文章
5543

被折叠的 条评论
为什么被折叠?



