комбинация MouseDown и таймера

Я пытаюсь загрузить функцию типа «holdFunction», во время касания (MouseDown) и в течение максимум 1 секунды.

Поэтому, когда пользователь пытается коснуться и удерживать в течение секунды, я должен вызвать функцию, и это не связано с 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;
        }
    }

person AliMajidiFard9    schedule 07.08.2017    source источник


Ответы (1)


Это то, что вы ищите?

Если пользователь удерживает MouseDown в течение 1 секунды, событие запускается?

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();
    }
}
person Dominic Jonas    schedule 07.08.2017