2017-08-07 66 views
0

我尝试在触摸(MouseDown)和最大1秒钟期间加载类似“holdFunction”的函数。MouseDown和计时器的组合

所以当用户尝试触摸并保持一秒钟我必须调用该函数,这与mouseUp无关。

也许我一定要结合这些:

private DateTime dtHold; 
private void EditProduct_MouseDown(object sender, MouseButtonEventArgs e) 
{ 
dtHold = DateTime.Now; 
} 
private void EditProduct_MouseUp(object sender, MouseButtonEventArgs e) 
{ 
TimeSpan interval = TimeSpan.FromSeconds(1); 
if (DateTime.Now.Subtract(dtHold) > interval) 
{ 
//HoldFunction(); 
} 
} 

System.Windows.Threading.DispatcherTimer dispatcherTimer = new System.Windows.Threading.DispatcherTimer(); 
    private void EditProduct_MouseDown(object sender, MouseButtonEventArgs e) 
    { 
    dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick); 
    dispatcherTimer.Interval = new TimeSpan(0, 0, 0,1,0); 
    dispatcherTimer.Start(); 
    } 

    private int _sec = 0; 
    private void dispatcherTimer_Tick(object sender, EventArgs e) 
    { 
     _sec = _sec + 1; 
     if (_sec == 2) 
     { 
      dispatcherTimer.Stop(); 
      { 
       //HoldFunction(); 
      } 
      _sec = 0; 
      return; 
     } 
    } 

回答

0

这是你在找什么?

如果用户持有MouseDown 1秒,evnt被解雇?

public partial class Window2 : Window 
{ 
    private DispatcherTimer _DispatcherTimer = new DispatcherTimer(); 
    public Window2() 
    { 
     InitializeComponent(); 

     MouseDown += _MouseDown; 
     MouseUp += _MouseUp; 

     _DispatcherTimer.Interval = TimeSpan.FromSeconds(1.0); 
     _DispatcherTimer.Tick += _DispatcherTimer_Tick; 
    } 

    private void _DispatcherTimer_Tick(object sender, EventArgs e) 
    { 
     _DispatcherTimer.Stop(); 
     Title = DateTime.Now.ToString(); 
    } 

    private void _MouseUp(object sender, MouseButtonEventArgs e) 
    { 
     _DispatcherTimer.Stop(); 
    } 

    private void _MouseDown(object sender, MouseButtonEventArgs e) 
    { 
     _DispatcherTimer.Start(); 
    } 
} 
+0

是的,这工作完美,谢谢你:) – AliMajidiFard9