0
votes

Comment faire quelque chose après avoir cliqué sur le bouton MessageBox, mais avant que cette messagerie de messagerie se ferme?

J'ai une liste de "projets" avec quelques informations dans des zones de texte pour chaque projet. L'utilisateur peut sélectionner un projet puis modifier les informations et cliquer sur le bouton Enregistrer après cela.

Si je modifie le projet sélectionné sans enregistrer les modifications, une boîte Oui / Non apparaît: P>

DialogResult dialogResult = MessageBox.Show(
            "Do you want to save changes ?",
            "Title",
            MessageBoxButtons.YesNo);

if (dialogResult == DialogResult.Yes)
{
    //Click Yes
}
else
{
    //Click No
}    


7 commentaires

Non, MessageBox.Show est modal. Cela signifie que lorsque vous appelez cette méthode, le code ne renvoie pas avant d'appuyer sur les boutons Oui / Non.


Pourquoi voulez-vous rester sur la messagerie?


Vous devrez créer votre propre formulaire pour une telle fonctionnalité.


Oui, je sais que le code "// cliquez sur Oui" ou "// Click NO" n'est exécuté qu'après avoir cliqué sur. Mais entre clicking et ce code, puis-je exécuter autre code?


Empêcher l'utilisateur de faire quelque chose d'autre avant de rafraîchir ().


@Thomasderay bien probablement il serait utile si la MessageBox.Show ait une sorte d'événement sur lequel vous pourriez lier votre propre code, mais ce n'est pas le cas et ce message célèbre de C # Maître Eric Lippert explique beaucoup Combien d'employés de Microsoft prend-il pour changer d'ampoule?


Okok merci à vos réponses! :)


4 Réponses :


-1
votes

Non, une boîte de message ne peut pas faire cela. Ce n'est pas censé faire ça. Il est censé simplement afficher un message ... dans une boîte :)

Ce que vous pouvez toujours faire est de créer votre propre fenêtre qui ressemble à une boîte de message et se comporte comme une boîte de message, mais fait des choses lorsque vous cliquez sur les boutons.


0 commentaires

1
votes

L'intégré messagebox ne permet pas de comportement aussi compliqué.

Un moyen de faire cela consiste à créer votre propre boîte de message. Créez une sous-classe de formulaire , ajoutez des étiquettes et des boutons. Exposez certains événements tels que YesClicked et noclicé .

Dans votre formulaire principal, créez une instance de votre boîte de message personnalisée, abonnez-vous aux événements et appelez showdialog dessus.

Une fois l'actualisation terminée, vous pouvez appeler Fermer ou Disposer sur votre boîte de message personnalisée pour la fermer.


0 commentaires

0
votes

Essayez de créer une boîte de message personnalisée. J'ai commenté le code, laissez-moi savoir si vous avez besoin de clarification xxx


0 commentaires

0
votes

Vous pouvez modifier ce qui se passe, basé sur quel bouton cliquant sur quel bouton est cliqué, avec le dialogruresult xxx


0 commentaires