none
L'évènement Click d'un bouton est levé deux fois RRS feed

  • Question

  • Bonjour,

    J'ai un comportement bizarre dans nos applications WPF v4. L'évènement Click d'un bouton est levé deux fois si les conditions suivantes sont réunies :

    - Le bouton a sa propriété "IsDefault" définie à true. L'utilisateur tape la touche entrée dans le formulaire.

    - L'évènement Click génère une exception.

    - L'exception est gérée par l'évènement Application.DispatcherUnhandledException.

    - Le code de gestion de l'évènement affiche l'exception dans une boite de dialogue.

    Je reproduis ce comportement dans une application toute simple. Il faut créer une application WPF vide. Ajouter un bouton sur le formulaire principal. Définir sa propriété "IsDefault" à true.

    Dans le App.xaml.cs :

    public partial class App : Application
        {
            protected override void OnStartup(StartupEventArgs e)
            {
                base.OnStartup(e);
    
                this.DispatcherUnhandledException += new DispatcherUnhandledExceptionEventHandler(App_DispatcherUnhandledException);
            }
    
            private void App_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)
            {
                e.Handled = true;
                MessageBox.Show(e.Exception.Message);
            }
        }
    

    Dans le MainWindow.xaml.cs :

    public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
            }
    
            private void button1_Click(object sender, RoutedEventArgs e)
            {
                throw new ApplicationException("Boum");
            }
        }

    Ensuite, lancer l'application, taper la touche entrée => La boite de dialogue s'affiche deux fois.

    A part gérer l'erreur directement dans l'évènement Click, je ne vois pas quoi faire ? Si vous avez des idées, merci d'avance...


    mercredi 16 novembre 2011 15:14

Réponses

Toutes les réponses