Игнорировать одиночный клик в WPF - PullRequest
1 голос
/ 11 ноября 2010

У меня есть пользовательский элемент управления, в котором я хотел бы сделать что-то другое в случае одного клика или двойного щелчка.Я обрабатываю событие mouseLeftButtonDown следующим образом:

 private void cueCanvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        switch (e.ClickCount)
        {
            case 1:
                {
                    cueCanvas.Focus();
                    e.Handled = true;
                    _mouseStartPoint = Mouse.GetPosition(null);
                    break;
                }
            case 2:
                {
                    double pos = Mouse.GetPosition(cueCanvas).X;
                    TimeSpan time = ConvertFromPosition(pos);
                    AddNewEvent(time);
                    e.Handled = true;
                    break;
                }
        }
    }

Проблема в том, что WPF действительно не волнует, сколько раз вы щелкнули мышью, поэтому я получаю первое событие нажатия, даже есличтобы получить второй (в случае двойного щелчка).Кто-нибудь придумал способ обойти это?Я понимаю, что могу попытаться проявить смекалку и установить некоторые таймеры таким образом, чтобы первый щелчок был «отменен» в случае появления второго (я понимаю, что именно так и будет работать в фреймворке).Если это единственный ответ, кто-нибудь знает, как мы запрашиваем в системе соответствующую задержку клика?

1 Ответ

0 голосов
/ 11 ноября 2010

Насколько мне известно, на самом деле нет способа сделать это. Проблема в том, что вы боретесь с реальностью. :-) На самом деле, есть два клика на двойной щелчок. Вы хотите, чтобы один щелчок игнорировался, если за ним быстро следует двойной щелчок.

Вам придется подождать небольшой промежуток времени, чтобы увидеть, следует ли за ним второй щелчок. Вы можете запросить этот интервал, используя класс SystemInformation из WinForms, или просто вызвать Win32 API напрямую.

...