none
Evènement click du bouton dans le namespace system.windows.controls RRS feed

  • Question

  • Bonjour,

    Ma question va certainement vous sembler bateau, mais aujourd'hui nous avons reçu une anomalie dans notre application.

    Le client a effectué un double clic sur un bouton, cela a eu pour conséquence de lever deux évènements clic sur le bouton.

    En effectuant un test simple avec un bouton dans une fenêtre nous avons remarqué que l'évènement clic est levé 2 fois lorsque l'on effectue un clic.

    Voici la définition que l'on a utilisée pour créer un bouton dans notre page xaml :

    <Button Height="23" Margin="79,82,124,0" Name="button1" VerticalAlignment="Top" Click="button1_Click">Button</Button>

    Nous utilisons la classe Button contenu dans le namespace system.windows.controls.

    Est-ce qu'il existe un moyen d'empêcher que l'évènement clic soit levé deux fois lors d'un double clic ?

    S'agit-il d'un bogue wpf ou d'une utilisation différente de l'évènement clic ?
    mardi 29 septembre 2009 16:29

Toutes les réponses

  • l'événement Click n'est levé qu'une seule fois.... pourrait-on avoir :
    1) tout le XAML de l'application de test
    2) tout le C# de la page ?

    Merci,
    Alain

    mardi 13 octobre 2009 10:09
  • Si j'ai bien compris la question, le problème est que si on fait un double-clic sur un bouton, on a deux fois l'événement clic.

    Pour ne pas avoir ce comportement, et avoir un seul événement clic, il faut traiter le double clic, et ajouter le code "e.handled = true" dans l'événement double-clic pour que WPF considère que le 2e clic soit traité et ne génère pas de deuxième événement clic :


    <Button Height="23" Margin="79,82,124,0" Name="button1" VerticalAlignment="Top" Click="button1_Click" MouseDoubleClick="button1_MouseDoubleClick">Button</Button>

    private void button1_Click(object sender, RoutedEventArgs e)
    {
    System.Diagnostics.Debug.WriteLine("Click");
    }

    private void button1_MouseDoubleClick(object sender, MouseButtonEventArgs e)
    {
    System.Diagnostics.Debug.WriteLine("Double-Click");
    e.Handled = true;
    }

     

    dimanche 25 octobre 2009 19:03