首页 新闻 会员 周边

自定义双击且伴随其他条件

0
悬赏园豆:50 [已解决问题] 解决于 2016-04-08 16:14

一个rectangle控件的事件

            <Rectangle Name="btnDoubleClick" Width="50" Fill="Red"  MouseLeftButtonDown="btnDoubleClick_MouseLeftButtonDown" MouseLeftButtonUp="btnDoubleClick_MouseLeftButtonUp" />
        #region Custom Double Click
        DateTime clickTime;
        bool isClicked = false; 
        private void btnDoubleClick_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            System.Diagnostics.Debug.WriteLine("Down");
            if (isClicked)
            {
          isClicked = false; TimeSpan span
= DateTime.Now - clickTime; if (span.Milliseconds < System.Windows.Forms.SystemInformation.DoubleClickTime) { System.Diagnostics.Debug.WriteLine("Double Click"); } } else { isClicked = true; clickTime = DateTime.Now; } } private void btnDoubleClick_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { System.Diagnostics.Debug.WriteLine("Up"); } #endregion

我的问题是,如果是双击怎么不输出“Down”和“Up”?单击的时候只输出“Down”和“Up”?

亲福的主页 亲福 | 初学一级 | 园豆:40
提问于:2016-01-04 14:28
< >
分享
最佳答案
0

首次按下弹起的时候就已经输出了。要么就把单击的输出做个延时,这期间如果发生双击事件则不输出单击。

思路:设置一个双击标识,单击事件延时处理。如弹起事件

  new Thread(
    () =>
    {
      Thread.Sleep(DoubleClickTime);
      if (!isDoubleClick)
      {
        this.Dispatcher.Invoke(
          (Action)(() =>
          {
            System.Diagnostics.Debug.WriteLine("Up");
          })
          );
      }
    }
    ).Start();
收获园豆:50
geeksnail | 菜鸟二级 |园豆:368 | 2016-01-04 16:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册