解决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
# WPF自定义控件和样式之自定义按钮(Button)
# WPF水珠效果按钮组的实现教程
# WPF制作带小箭头的按钮完整代码
# WPF图片按钮的实现方法
# WPF MVVM制作发送短信小按钮
# WPF微信聊天和通讯录按钮样式代码分享
# WPF实现窗体中的悬浮按钮
# 两次
# 要在
# 具体内容
# 大家多多
# 单线程
# 法会
# 解决了
# Diagnostics
# Debug
# Print
# false
# var
# TotalMilliseconds
# System
# 会两秒后又
# ui
# style
# span
# Sleep
# Thread
相关文章:
深圳网站制作培训,深圳哪些招聘网站比较好?
淘宝制作网站有哪些,淘宝网官网主页?
高端建站三要素:定制模板、企业官网与响应式设计优化
如何选择适合PHP云建站的开源框架?
如何在阿里云高效完成企业建站全流程?
微网站制作教程,我微信里的网站怎么才能复制到浏览器里?
建站主机功能解析:服务器选择与快速搭建指南
,购物网站怎么盈利呢?
红河网站制作公司,红河事业单位身份证如何上传?
小型网站制作HTML,*游戏网站怎么搭建?
专业网站建设制作报价,网页设计制作要考什么证?
如何在建站之星网店版论坛获取技术支持?
如何在香港服务器上快速搭建免备案网站?
湖南网站制作公司,湖南上善若水科技有限公司做什么的?
小程序网站制作需要准备什么资料,如何制作小程序?
装修招标网站设计制作流程,装修招标流程?
网站制作新手教程,新手建设一个网站需要注意些什么?
微信小程序制作网站有哪些,微信小程序需要做网站吗?
c++ stringstream用法详解_c++字符串与数字转换利器
网站制作的方法有哪些,如何将自己制作的网站发布到网上?
建站之星代理平台如何选择最佳方案?
宝塔建站后网页无法访问如何解决?
公司门户网站制作流程,华为官网怎么做?
独立制作一个网站多少钱,建立网站需要花多少钱?
车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?
SQL查询语句优化的实用方法总结
C++中引用和指针有什么区别?(代码说明)
如何选择CMS系统实现快速建站与SEO优化?
javascript中对象的定义、使用以及对象和原型链操作小结
青岛网站建设如何选择本地服务器?
外贸公司网站制作,外贸网站建设一般有哪些步骤?
建站之星安装需要哪些步骤及注意事项?
简历在线制作网站免费版,如何创建个人简历?
枣阳网站制作,阳新火车站打的到仙岛湖多少钱?
网站设计制作企业有哪些,抖音官网主页怎么设置?
临沂网站制作企业,临沂第三中学官方网站?
制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?
建站之星安装后如何自定义网站颜色与字体?
电视网站制作tvbox接口,云海电视怎样自定义添加电视源?
武清网站制作公司,天津武清个人营业执照注销查询系统网站?
整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?
c++怎么用jemalloc c++替换默认内存分配器【性能】
宿州网站制作公司兴策,安徽省低保查询网站?
网站微信制作软件,如何制作微信链接?
制作电商网页,电商供应链怎么做?
济南专业网站制作公司,济南信息工程学校怎么样?
如何快速搭建二级域名独立网站?
营销式网站制作方案,销售哪个网站招聘效果最好?
建站之星展会模板:智能建站与自助搭建高效解决方案
网站制作说明怎么写,简述网页设计的流程并说明原因?
*请认真填写需求信息,我们会在24小时内与您取得联系。