中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何解決WPF中button按鈕同時點擊多次觸發click的問題

發布時間:2021-09-16 14:16:30 來源:億速云 閱讀:267 作者:小新 欄目:編程語言

小編給大家分享一下如何解決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的問題”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

香格里拉县| 泰州市| 峨山| 浏阳市| 南通市| 洛宁县| 青川县| 三台县| 成都市| 东至县| 张家口市| 桃园市| 孟津县| 手机| 安远县| 山西省| 开平市| 布尔津县| 眉山市| 勃利县| 县级市| 镇平县| 兴文县| 清涧县| 涿州市| 盖州市| 鸡西市| 临城县| 朝阳市| 崇礼县| 巴楚县| 合阳县| 桂东县| 无棣县| 大田县| 灌云县| 历史| 扶风县| 大余县| 上虞市| 北宁市|