Событие Click не должно срабатывать при удержании события

У меня есть кнопка в моем приложении Windows Phone Silverlight 8.1. Я создал два события: одно событие щелчка и второе событие удержания. Я хочу, чтобы когда пользователь удерживал такую ​​кнопку, событие щелчка не срабатывало, но в настоящее время, когда я держу кнопку, а затем оставляю эту кнопку, кнопка нажатия также пожары, так как справиться с этим.

 private void ExtraButton_Click(object sender, RoutedEventArgs e)
 {

 }

 private void ExtraButton_Hold(object sender, GestureEventArgs e)
 {

 }

так как отменить событие клика, когда удержание выполнено.

3 ответа

Решение

Я предлагаю вам заменить событие " Нажатие кнопки" на событие " Нажатие кнопки", поскольку при удержании этой кнопки сначала будет вызываться событие " Удержание кнопки".

        private void button1_Hold(object sender, System.Windows.Input.GestureEventArgs e)
    {
        e.Handled = true;  
        MessageBox.Show("button have been holded");

    }

    private void button1_Tap(object sender, System.Windows.Input.GestureEventArgs e)
    {
        MessageBox.Show("button have been tapped");
        //your code goes here
    }

Если для свойства Handled установлено значение true, событие нажатия кнопки не будет обрабатывать ваш жест.

Используйте события Button_Hold и Button_Tap для достижения ваших требований.

Вы можете выполнить свое требование, отключив событие нажатия кнопки, удерживая, и снова подключив событие click к событию PointerExited. Смотрите приведенный ниже фрагмент кода.

Button btn = new Button();

btn.Holding += Btn_Holding;

btn.Click += Btn_Click;

btn.PointerExited += Btn_PointerExited;


        private void Btn_PointerExited(object sender, PointerRoutedEventArgs e)
        {
            btn.Click += Btn_Click;
        }

        private void Btn_Click(object sender, RoutedEventArgs e)
        {

        }

        private void Btn_Holding(object sender, HoldingRoutedEventArgs e)
        {
            btn.Click -= Btn_Click;
        }

В событии PointerExited вы можете перехватить событие click, только если оно еще не перехвачено с использованием некоторых условий. Это улучшит производительность.

Другие вопросы по тегам