MouseDown和计时器的组合

时间:2017-08-07 09:38:04

标签: c# wpf timer mousedown dispatchertimer

我尝试在触摸(MouseDown)期间和最多1秒钟期间加载像“holdFunction”这样的函数。

因此,当用户尝试触摸并按住一秒钟时,我必须调用该函数,这与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;
        }
    }

1 个答案:

答案 0 :(得分: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();
    }
}