Событие 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, только если оно еще не перехвачено с использованием некоторых условий. Это улучшит производительность.