执行保持事件时,单击事件不应触发

时间:2016-12-10 10:41:33

标签: c# windows-phone-8.1 windows-phone-silverlight

我的Windows手机Silverlight 8.1应用程序中有按钮 我创建了两个事件一个单击事件和第二个保持事件,我想当用户按下这样的按钮然后点击事件不应该触发, 但是目前当我按住按钮然后离开那个按钮点击按钮也会触发,所以如何处理它。

 private void ExtraButton_Click(object sender, RoutedEventArgs e)
 {

 }

 private void ExtraButton_Hold(object sender, GestureEventArgs e)
 {

 }

所以如何在执行保持事件时取消点击事件。

3 个答案:

答案 0 :(得分: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事件中,只有在使用某些条件尚未挂钩时才能挂钩click事件。它会提高性能。

答案 1 :(得分:1)

我建议您可以使用按钮点击事件替换按钮点击事件,因为当您按住此按钮时,按钮保持事件将首先被触发。

        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事件将无法处理您的手势。

答案 2 :(得分:1)

使用Button_Hold和Button_Tap事件来满足您的要求。