国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > .NET > 正文

WPF中button按鈕同時(shí)點(diǎn)擊多次觸發(fā)click解決方法

2024-07-10 13:32:17
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

解決WPF中button按鈕同時(shí)點(diǎn)擊多次觸發(fā)click的方法,供大家參考,具體內(nèi)容如下

  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;  }

以上代碼并沒(méi)法解決用戶點(diǎn)擊兩次按鈕觸發(fā)兩次的問(wèn)題,因?yàn)閡i線程是單線程的,所以這個(gè)這樣會(huì)導(dǎo)致用戶連續(xù)點(diǎn)擊兩次,會(huì)兩秒后又調(diào)用Button_Click一次,輸出如下:

1207.069,1;2017年4月19日 13:58:22
2055.1176,2;2017年4月19日 13:58:24

所以要在this.IsEnabled = false;后面強(qiáng)制界面刷新,代碼如下:

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();這個(gè)方法會(huì)強(qiáng)制界面刷新,問(wèn)題就解決了。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VeVb武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到ASP.NET教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 东明县| 增城市| 宣武区| 莆田市| 德兴市| 竹山县| 习水县| 应用必备| 郸城县| 西吉县| 云林县| 公主岭市| 韶山市| 荆门市| 中宁县| 怀安县| 吐鲁番市| 长白| 商丘市| 抚松县| 大埔区| 四会市| 神木县| 固始县| 茶陵县| 舟曲县| 分宜县| 安西县| 淮北市| 六枝特区| 肃宁县| 陈巴尔虎旗| 礼泉县| 紫阳县| 石首市| 黄陵县| 东光县| 光泽县| 肃宁县| 临漳县| 新昌县|