如何解决WPF中button按钮同时点击多次触发click的问题
发表于:2025-01-17 作者:千家信息网编辑
千家信息网最后更新 2025年01月17日,小编给大家分享一下如何解决WPF中button按钮同时点击多次触发click的问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一
千家信息网最后更新 2025年01月17日如何解决WPF中button按钮同时点击多次触发click的问题
小编给大家分享一下如何解决WPF中button按钮同时点击多次触发click的问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
解决WPF中button按钮同时点击多次触发click的方法,具体内容如下
DateTime lastClick = DateTime.Now; object obj = new object(); int i = 0; private void Button_Click(object sender, RoutedEventArgs e) { this.IsEnabled = false; var t = (DateTime.Now - lastClick).TotalMilliseconds; i++; lastClick = DateTime.Now; System.Diagnostics.Debug.Print(t + "," + i + ";" + DateTime.Now); Thread.Sleep(2000); this.IsEnabled = true; }
以上代码并没法解决用户点击两次按钮触发两次的问题,因为ui线程是单线程的,所以这个这样会导致用户连续点击两次,会两秒后又调用Button_Click一次,输出如下:
1207.069,1;2017年4月19日 13:58:22
2055.1176,2;2017年4月19日 13:58:24
所以要在this.IsEnabled = false;后面强制界面刷新,代码如下:
private void Button_Click(object sender, RoutedEventArgs e) { this.IsEnabled = false; DispatcherHelper.DoEvents(); var t = (DateTime.Now - lastClick).TotalMilliseconds; i++; lastClick = DateTime.Now; System.Diagnostics.Debug.Print(t + "," + i + ";" + DateTime.Now); Thread.Sleep(2000); this.IsEnabled = true; } public static class DispatcherHelper { [SecurityPermissionAttribute(SecurityAction.Demand, Flags = SecurityPermissionFlag.UnmanagedCode)] public static void DoEvents() { DispatcherFrame frame = new DispatcherFrame(); Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background, new DispatcherOperationCallback(ExitFrames), frame); try { Dispatcher.PushFrame(frame); } catch (InvalidOperationException) { } } private static object ExitFrames(object frame) { ((DispatcherFrame)frame).Continue = false; return null; } }
DispatcherHelper.DoEvents();这个方法会强制界面刷新,问题就解决了。
以上是"如何解决WPF中button按钮同时点击多次触发click的问题"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
按钮
问题
同时
内容
篇文章
代码
方法
用户
界面
线程
强制
不怎么
大部分
更多
知识
行业
资讯
资讯频道
频道
参考
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
华为服务器提示crl p
郑州大学网络安全学院院长
主域名服务器是什么
百世网络技术莱西电话
论文和数据库有什么区别
坦克世界服务器断开
服务器管理器没有正确安装
数据库置疑了怎么修复
数据库某猎列怎么查询
彩票软件开发程序高手
数据库工资多少
地铁指挥中心安全风险数据库
即墨软件开发
阿里巴巴数据库优化
惠州金融软件开发热线
计算机三级数据库技术软件
服务器系统集成服务方案费用
软件开发有税率返还吗
指定静态服务器目录
芯融网络技术研究院
无线网络技术的基本概念
网络安全有很多危害谈谈如何防范
建行的软件开发岗
装备维修技术由什么数据库收录
对软件开发过程的了解
服务器管理器没有正确安装
广州讯助互联网科技有限公司
我看网络安全的手抄报
网络安全企业的愿景
金铲铲 服务器已满