Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 执行保持事件时不应触发单击事件_C#_Windows Phone 8.1_Windows Phone Silverlight - Fatal编程技术网

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

C# 执行保持事件时不应触发单击事件,c#,windows-phone-8.1,windows-phone-silverlight,C#,Windows Phone 8.1,Windows Phone Silverlight,我的windows phone silverlight 8.1应用程序中有一个按钮 我创建了两个事件一个点击事件和第二个保持事件,我想当用户按住这样的按钮时,点击事件应该不会触发, 但目前当我按住按钮,然后离开那个按钮时,点击按钮也会触发,那个么如何处理呢 private void ExtraButton_Click(object sender, RoutedEventArgs e) { } private void ExtraButton_Hold(object sender, G

我的windows phone silverlight 8.1应用程序中有一个按钮 我创建了两个事件一个点击事件和第二个保持事件,我想当用户按住这样的按钮时,点击事件应该不会触发, 但目前当我按住按钮,然后离开那个按钮时,点击按钮也会触发,那个么如何处理呢

 private void ExtraButton_Click(object sender, RoutedEventArgs e)
 {

 }

 private void ExtraButton_Hold(object sender, GestureEventArgs e)
 {

 }

因此,如何在执行保持事件时取消单击事件。

您可以通过在保持时解除按钮单击事件的锁定,然后在PointerExit事件中再次连接单击事件来实现您的要求。请参阅下面的代码片段

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事件尚未使用某些条件钩住时,才可以钩住它。它将提高性能。

您可以通过在按住按钮的同时解除按钮单击事件的锁定,然后在PointerExit事件中再次连接单击事件来实现您的要求。请参阅下面的代码片段

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事件尚未使用某些条件钩住时,才可以钩住它。这将提高性能。

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

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

我建议您可以将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事件将不会处理您的手势。

使用Button_-Hold和Button_-Tap事件来实现您的要求。

使用Button_-Hold和Button_-Tap事件来实现您的要求。

谢谢“我明天会尝试,如果成功,我一定会将您的答案标记为已回答。”。顺便问一下,你能回答另一个问题吗?这不起作用,因为当我把手指从按钮上移开时,点击事件会触发(这个解决方案实际上似乎很实用,在您的情况下它真的不起作用吗?您可以使用
Debug.WriteLine
查看触发哪些事件以及何时触发?是的,但我使用了许多技巧使用堆栈面板在第一个按钮上方创建按钮,按住第一个按钮时折叠第一个按钮,在第二个按钮上单击第一个按钮和鼠标,并使用is enabled=true/false;例如,对于保留事件,使单击事件禁用,但在鼠标离开事件时,我需要再次启用它,但在鼠标离开事件时,我不理解单击事件如何在鼠标离开时触发,因为这实际上是按钮的内置行为,如果将指针移离按钮,它们不会触发单击。我将尝试在UWP中重新创建此选项,然后返回youThanks'我明天会尝试,如果成功,我肯定会将您的答案标记为已回答。顺便问一下,您能否回答另一个问题,这不成功,因为当我离开按钮点击事件激发的手指时..:(这个解决方案实际上似乎很实用,在您的情况下它真的不起作用吗?您可以使用
Debug.WriteLine
查看触发哪些事件以及何时触发?是的,但我使用了许多技巧使用堆栈面板在第一个按钮上方创建按钮,按住第一个按钮时折叠第一个按钮,在第二个按钮上单击第一个按钮和鼠标,并使用is enabled=true/false;例如,对于保留事件,使单击事件禁用,但在鼠标离开事件时,我需要再次启用它,但在鼠标离开事件时,我不理解单击事件如何在鼠标离开时触发,因为这实际上是按钮的内置行为,如果将指针移离按钮,它们不会触发单击。我将尝试在UWP中重新创建此按钮,然后返回给您我已经尝试创建两个按钮(使用堆栈面板在第一个按钮上创建第二个按钮,并以编程方式折叠可见性和可见),但两个事件仍会启动,也尝试鼠标输入,但两个事件仍会启动我已经尝试创建两个按钮(第二个按钮位于第一个按钮上方,使用堆栈面板并以编程方式折叠可见性和可视性)但两个事件仍会启动,也请尝试鼠标输入但两个事件仍会启动创建:)它工作正常谢谢,现在我将“点击通风”替换为“点击通风”…谢谢:)太好了:)它工作正常谢谢,现在我将“点击通风”替换为“点击通风”…谢谢:)