0

我在我的 Windows phone silverlight 8.1 应用程序中有按钮我创建了两个事件一个单击事件和第二个按住事件,我希望当用户按住这样的按钮然后单击事件不应该触发,但是当前当我按住按钮然后离开该按钮单击按钮时火灾,那么如何处理。

 private void ExtraButton_Click(object sender, RoutedEventArgs e)
 {

 }

 private void ExtraButton_Hold(object sender, GestureEventArgs e)
 {

 }

那么如何在执行保持事件时取消点击事件。

4

3 回答 3

1

您可以通过在按住时取消连接按钮单击事件并在 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 事件中,只有在使用某些条件尚未挂钩时,才可以挂钩单击事件。它将提高性能。

于 2016-12-10T14:53:25.057 回答
1

我建议你可以将Button Click事件替换为Button Tap事件,因为当你按住这个按钮时,会首先触发Button Hold事件。

        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 Click 事件将不会处理您的手势。

于 2016-12-16T10:22:34.577 回答
1

使用 Button_Hold 和 Button_Tap 事件来实现您的要求。

于 2017-05-21T17:30:57.927 回答