WPF响应长按事件
原文:WPF响应长按事件
思路:MouseDown 时启动一个线程并标记IsMouseDown=True,若MouseUp则修改标记IsMouseDown=False,线程内Sleep 1500ms之后判断IsMouseDown=True则开始响应事件
bool IsLeftMouseDown = false;
private void DataGrid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
IsLeftMouseDown = true;
Thread th = new Thread(new ThreadStart(() =>
{
Thread.Sleep(1500);
if (IsLeftMouseDown)
{
MessageBox.Show("长按了1.5秒");
IsLeftMouseDown = false;
}
else
{
MessageBox.Show("1.5秒内释放了点击");
}
}));
th.Start();
}
private void DataGrid_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
IsLeftMouseDown = false;
}
以上的实现可以解决问题,但是有bug,以下提供更优的解决方案:
bool IsLeftMouseDown = false;
bool EntryTouch = false;
Thread th = null;
private void DataGrid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
IsLeftMouseDown = true;
if (th != null)
{
if (th.ThreadState == ThreadState.Running || th.ThreadState == ThreadState.WaitSleepJoin)
th.Abort();
}
th = new Thread(new ThreadStart(() =>
{
Thread.Sleep(1500);
if (IsLeftMouseDown)
{
EntryTouch = true;
MessageBox.Show("长按了1.5秒");
IsLeftMouseDown = false;
}
else
{
MessageBox.Show("1.5秒内释放了点击");
}
EntryTouch = false;
}));
th.Start();
}
private void DataGrid_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
if(EntryTouch)
{
MessageBox.Show("已进入长按事件");
}
IsLeftMouseDown = false;
}
WPF响应长按事件的更多相关文章
- Android长按事件和点击事件 冲突问题
长按点击的时候默认会触发点击事件,android系统是优先点击的,并且没有返回值:而长按事件是有返回值的,如果返回false,两个事件都会有响应,如果返回true则只响应长按事件.
- Android ListView 嵌套 ImageView,如何响应ImageView的点击和长按事件
http://www.tuicool.com/articles/EZv2Uv 1.先说下嵌套在ListView中的ImageView如何响应点击事件 方法:在imageView中设置onClick属性 ...
- 在 WPF 中如何在控件上屏蔽系统默认的触摸长按事件
来源:https://stackoverflow.com/questions/5962108/disable-a-right-click-press-and-hold-in-wpf-applicati ...
- Android 长按事件和短按事件同时响应
在长按事件中的return false 改为return true就可以解决这个问题
- WPF窗口长时间无人操作鼠标自动隐藏
在软件开发中有时会有等待一段时间无人操作后隐藏鼠标,可能原因大致如下: 1.为了安全性,特别是那些需要用到用户名和密码登录服务端的程序,常常考虑长期无人操作,程序自动跳转到用户登录界面: 2.软件为了 ...
- WPF 学习笔记 路由事件
1. 可传递的消息: WPF的UI是由布局组建和控件构成的树形结构,当这棵树上的某个节点激发出某个事件时,程序员可以选择以传统的直接事件模式让响应者来响应之,也可以让这个事件在UI组件树沿着一定的方向 ...
- TextView AutoLink, ClikSpan 与长按事件冲突的解决
前言 首先,我们先来复习一下 autoLink 和 ClickableSpan 是干什么用的. autoLink 当中有五个属性值:分别是 phone.email.map.web.all 和 none ...
- 鸿蒙开发板外设控制 之 实现物理按键的“长按事件”(按键通用框架 V0.0.2)
我在之前的帖子<实现按键"按下事件"和"释放事件"的通用框架(V0.0.1)>中阐述了DTButton-V0.0.1的设计思路,并且也在帖子中开源了 ...
- UIButton无法响应点击事件
一.问题描述 因为项目需要,需要UITableView上添加固定的筛选表头,一直固定,不能随UITableView滚动.所以直接将表头与UITableView分离,将它添加到控制器的UIView上,即 ...
随机推荐
- 向 Windows 高级用户进阶,这 10 款效率工具帮你开路 | 新手问号
原文地址:https://sspai.com/post/41411 编注:「新手问号」是少数派的一个全新栏目.它面向完全「零基础」的新手用户,通过最简单易懂的方式,帮助你快速掌握关于系统和软硬件的入门 ...
- 特征点提取之Harris角点提取法
1. 特征点提取的意义 2.角点 3. Harris角点检測的基本原理 4.Harris角点检測算法的步骤 5.Harris角点提取算法设计 <span style="font-siz ...
- chrome-vimium在markdown插件的页面失去效果
chrome-vimium在markdown插件的页面失去效果
- CreateFeature与CreateFeatureBuffer区别
转自原文CreateFeature与CreateFeatureBuffer区别 CreateFeature主要用于插入一条数据,CreateFeatureBuffer住哟啊用于插入多条数据,详细说明见 ...
- 【物理/数学】概念的理解 —— pivot、position
0. 基本释义 pivot: n. 枢轴:中心点:旋转运动 vt. 以-为中心旋转:把-置于枢轴上 vi. 在枢轴上转动:随-转移 adj. 枢轴的:关键的 position: n. 位置,方位:职位 ...
- [React Router v4] Use Regular Expressions with Routes
We can use regular expressions to more precisely define the paths to our routes in React Router v4. ...
- HDU 1502 - dp + 压位
传送门 题目大意: 3*n的字符串,A.B.C分别有n个,w(X)代表X字母出现的次数,要求该字符串的所有前缀中w(A) >= w(B) >= w(C),问合法方案数有多少. 题目分析: ...
- General-Purpose Operating System Protection Profile
1 Protection Profile Introduction This document defines the security functionality expected to be ...
- iOS开发 - OC - block的详解 - 基础篇
深入理解oc中的block 苹果在Mac OS X10.6 和iOS 4之后引入了block语法.这一举动对于许多OC使用者的编码风格改变很大.就我本人而言,感觉block用起来还是很爽的,但一直以来 ...
- Android高度仿新浪微博引导页面
在写这一篇文章之前,先向大家推荐一篇博文:http://blog.csdn.net/dawanganban/article/details/17297671 感谢这位博主,我在该博主的基础上完成了对新 ...