c#
Répondre à la discussion
Affichage des résultats 1 à 12 sur 12

c#



  1. #1
    gdisque

    c#


    ------

    bonjour

    code C# visual studio winform
    Je voudrais savoir comment fermé la fenêtre de la méthode statique show de la classe MessageBox DialogResult show(string ex);
    qui apparais lors d'un clic sur button ?

    -----

  2. #2
    umfred

    Re : c#

    en cliquant sur un bouton de la boite de dialogue, dialogResult contient le bouton appuyé

  3. #3
    gdisque

    Re : c#

    je n'est que la croix sur la fenêtre
    la croix ne ferme pas la fenêtre
    avec ce code ?
    a la place de e.cancel ,je le remplace par this.close();?
    private void button1_Click(object sender, System.EventArgs e)
    Code:
    {
            DialogResult dialog = MessageBox.Show("message", "message", MessageBoxButtons.YesNo);
            if (dialog == DialogResult.No)
            {
                e.Cancel = true;
            }
        }
    Dernière modification par JPL ; 15/03/2021 à 20h01. Motif: ajout de la balise Code

  4. #4
    Ikhar84
    Animateur Informatique

    Re : c#

    Bonsoir,

    Le premier message n'a pas de sens, mais je crois que tu veux, après que l'utilisateur ai cliqué sur un bouton avec le label "Quitter", demander confirmation via une MessageBox présentant deux boutons, Oui et Non, et qu'en cas de clic sur le bouton Oui seulement, la fenêtre courante soit fermée (et non pas seulement la MessageBox, qui est, elle, fermée "automatiquement") ?

    Si c'est le cas, tu as d'abord une faute sur la classe MessageBoxButton qui ne prends pas de s.

    Ensuite, tu peux personnaliser les message affiché (message) et le titre de la boîte de dialogue (caption) :

    Code:
        DialogResult dialog = MessageBox.Show("Êtes-vous sûr de vouloir quitter l'application ?", "Confirmation", MessageBoxButton.YesNo);
    
        if (dialog == DialogResult.Yes) {
            this.Close();
    
            // ou Application.Exit(0); suivant le cas...
        }
    Dernière modification par Ikhar84 ; 15/03/2021 à 22h05.
    J'ai glissé Chef !

  5. A voir en vidéo sur Futura
  6. #5
    umfred

    Re : c#

    Dans ton code, le e.cancel concerne le bouton cliqué, puisque e est l'événement du bouton.
    Pour fermer l'application ou la fenêtre, il faut que tu dises explicitement que c'est la fenêtre que tu veux fermer.

    Mais, personnellement, je gérerai la fermeture de la fenêtre dans son événement FormClosing qui se déclenche quand on demande la fermeture de la fenêtre (par la croix de fermeture ou par l'appel à la fonction Form.close() ). Dans ce bouton, j'appelerai donc directement Form.Close(), comme ça le message de confirmation n'apparait qu'une seule fois et est géré à la demande de fermeture de la fenêtre uniquement.

    Code:
            private void button1_Click(object sender, EventArgs e)
            {
                this.Close();
            }
    
            private void Form1_FormClosing(object sender, FormClosingEventArgs e)
            {
                DialogResult dialog = MessageBox.Show("Voulez-vous vraiment quitter l'application ?", "Fermeture", MessageBoxButtons.YesNo);
                if (dialog == DialogResult.No)
                {
                    e.Cancel = true;
                }
            }

  7. #6
    gdisque

    Re : c#

    salut

    j'ai essayé de passé trois paramètre a la méthode statique de la class MessageBox
    mais j'ai l'erreur 1 No overload for method 'Show' takes '3' arguments

    lorsque j'appuie sur le bouton j'ai une fenêtre avec le message en bas et le bouton ok en haut comme sur l'image posté
    Nom : messabox.jpg
Affichages : 125
Taille : 12,1 Ko


    lorsque j'écris ce code
    Code:
    r = MessageBox.Show(output);
    if (r == DialogResult.Yes)
    {
     this.Close();
    }
    j'appuie sur ok,la petit croix s'affiche dans la fenêtre principal pour quitté l'application
    mais,je voudrais que le message ce ferme pour appuyer à nouveau sur le bouton
    ne peux ton pas écrire Show.Close();?
    Dernière modification par gdisque ; 16/03/2021 à 16h37.

  8. #7
    umfred

    Re : c#

    Par défaut, MessageBox.show(string) affiche seulement un bouton OK, qui n'est pas le bouton Yes, donc ton test ne fonctionnera pas, il faut comparer r à DialogResult.OK.

    MessageBox.show peut avoir 3 arguments comme dans mon code (string, string, buttons), mais il y a d'autres définitions avec 3 arguments => cf la doc
    Sinon c'est peut-être le framework cible et sa version (.NET Core, .NET Framework, ....) (à voir dans les propriétés du projet)

    MessageBox est une fenêtre bloquante. La suite du code ne peut-être exécuter que si on ferme cette fenêtre.

  9. #8
    Ikhar84
    Animateur Informatique

    Re : c#

    Bonsoir,

    Tu ne tiens aucun compte des exemples de codes donnés.
    D'où sort ta variable output, par exemple ?

    Si l'ide te dit que tu ne passes pas assez d'argument, ajoute une MessageBoxIcon :
    Code:
        MessageBox.Show("Voulez-vous vraiment quitter l'application ?", "Fermeture", MessageBoxButton.YesNo, MessageBoxIcon.Warning);
    doc officielle
    Dernière modification par Ikhar84 ; 16/03/2021 à 19h54.
    J'ai glissé Chef !

  10. #9
    gdisque

    Re : c#

    salut

    j'ai mi le .net 3.5 compact framework,mais je c'est pas si le programme la prit en compte
    pour la condition if,j'ai passé tout les paramètres pour "MessageBoxButton" OK Yes OKCancel rien ne passe
    j'ai aussi essayé MessageBox.Show,le programme ne dois pas le reconnaitre
    en fin de compte,j'ai viré MessageBox.Show pour TextBox.Text ça fait le job
    la variable output est de type string est la pour affiché la variable envoyé par TCP/IP
    merci de votre aide,je reviendrais demandé votre aide pour comprendre l’environnement de programmation winforms c#
    Dernière modification par gdisque ; 18/03/2021 à 18h43.

  11. #10
    umfred

    Re : c#

    le .NET compact c'est pour un développement sur pour des terminaux en windows CE ou windows mobile (https://fr.wikipedia.org/wiki/.NET_Compact_Framework). Est-ce que c'est la cible de ton programme ?
    Si ton programme doit fonctionner sur un PC standard, utilise .NET 3.5 ou 4.5 (Framework ou Core)

  12. #11
    invite44510b00

    Re : c#

    Citation Envoyé par gdisque Voir le message
    salut

    j'ai mi le .net 3.5 compact framework,mais je c'est pas si le programme la prit en compte
    Comme précisé , le .NET CF est prévue pour des OS très anciens (La dernière version de Widows Mobile, la 6.5, date de 2008 et CF ne ciblait pas WP) qui ne sont plus utilisés; pour quelle OS cible est ce programme ?

    pour la condition if,j'ai passé tout les paramètres pour "MessageBoxButton" OK Yes OKCancel rien ne passe
    j'ai aussi essayé MessageBox.Show,le programme ne dois pas le reconnaitre
    en fin de compte,j'ai viré MessageBox.Show pour TextBox.Text ça fait le job
    la variable output est de type string est la pour affiché la variable envoyé par TCP/IP
    C'est vraiment n'importe quoi.....

  13. #12
    umfred

    Re : c#

    Citation Envoyé par gdisque Voir le message
    pour la condition if,j'ai passé tout les paramètres pour "MessageBoxButton" OK Yes OKCancel rien ne passe
    j'ai aussi essayé MessageBox.Show,le programme ne dois pas le reconnaitre
    en fin de compte,j'ai viré MessageBox.Show pour TextBox.Text ça fait le job
    Le résultat d'un MessageBox.show dépend des boutons qui lui sont fournis, si on lui indique les boutons YesNo, le résultat va prendre Yes, No, ou Cancel (quand on ferme la fenêtre avec la croix si je ne dis pas de bêtises)