IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

fermer MessageBox par code c#


Sujet :

C#

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    295
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 295
    Points : 67
    Points
    67
    Par défaut fermer MessageBox par code c#
    Bonjour,

    est ce que c'est possible de fermer un MessageBox apparait par code c# sans utiliser intervention de l'utilisateur ?

  2. #2
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    MessageBox ne le permet pas.

    Tu n'as plus qu'à créer ta propre forme de dialogue à lancer ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MyDialogForm TheDialogForm = new MydialogForm() ;
    DialogResult TheDialogResult=TheDialogForm.ShowDialog() ;
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par Graffito Voir le message
    Tu n'as plus qu'à créer ta propre forme de dialogue à lancer ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MyDialogForm TheDialogForm = new MydialogForm() ;
    DialogResult TheDialogResult=TheDialogForm.ShowDialog() ;
    Ben oui, mais ça te permet pas de la fermer, vu que le ShowDialog est bloquant...

    De toutes façons, je suppose que ce n'est pas son programme qui crée la MessageBox (sinon il suffirait de ne pas l'afficher du tout)

    Une solution serait d'envoyer une frappe de touche "Entrée" avec la méthode SendKeys.Send. Ca suppose que la MessageBox ait le focus...

  4. #4
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Ben oui, mais ça te permet pas de la fermer, vu que le ShowDialog est bloquant...
    Il suffit de mettre un timer dans la form de dialog pour tester le temps écoulé ou tout autre chose ...
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par Graffito Voir le message
    Il suffit de mettre un timer dans la form de dialog pour tester le temps écoulé ou tout autre chose ...
    Oui, en supposant que ce soit bien son programme qui crée la MessageBox... ce qui à mon avis n'est pas le cas, mais seul ouadie99 pourra le confirmer

  6. #6
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    295
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 295
    Points : 67
    Points
    67
    Par défaut
    non c pas moi qui crée le MessageBox, je traite un programme qui lance messagebox d'une manière externe et je veux disparaitre le message dans mon code c#

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 27
    Points : 33
    Points
    33
    Par défaut
    Citation Envoyé par tomlev Voir le message
    Ben oui, mais ça te permet pas de la fermer, vu que le ShowDialog est bloquant...

    De toutes façons, je suppose que ce n'est pas son programme qui crée la MessageBox (sinon il suffirait de ne pas l'afficher du tout)

    Une solution serait d'envoyer une frappe de touche "Entrée" avec la méthode SendKeys.Send. Ca suppose que la MessageBox ait le focus...
    Bonjour,

    Voici une très bonne solution pour pouvoir contrôler à peut prêt ce qu'on veut. J'utilise souvent cette solution pour valider les "confirm" javascript :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Runtime.InteropServices;
     
    namespace Validate
    {
        class Program
        {
            [DllImport("USER32.DLL")]
            public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
            [DllImport("USER32.DLL")]
            public static extern bool SetForegroundWindow(IntPtr hWnd);
     
            static void Main(string[] args)
            {
                IntPtr pointeur = IntPtr.Zero;
     
                while (true)
                {
                    pointeur = FindWindow("#32770", "Message de la page Web");
                    if (pointeur != IntPtr.Zero)
                    {
                        SetForegroundWindow(pointeur);
                        System.Windows.Forms.SendKeys.SendWait("{ENTER}");
                        pointeur = IntPtr.Zero;
                    }
                }
            }
        }
    }
    Il suffit de remplacer "#32770" par le nom de la classe de la fenêtre que l'on souhaite valider et "Message de la page Web" par son titre. Pour trouver le nom de la classe et le titre il suffit d'utiliser Spy++ fournit avec Visual Studio.

    Tu peux même faire de cette source un service si ta MessageBox est trop souvent récurrente.

    Bonne journée à tous.

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par neoprime1988 Voir le message
    Il suffit de remplacer "#32770" par le nom de la classe de la fenêtre que l'on souhaite valider et "Message de la page Web" par son titre. Pour trouver le nom de la classe et le titre il suffit d'utiliser Spy++ fournit avec Visual Studio.
    Sinon tu peux aussi passer null pour le nom de la classe, ça trouve n'importe quelle fenêtre avec le titre indiqué. Inversement, on peut aussi spécifier uniquement la classe si on ne connait pas le titre

  9. #9
    Membre du Club
    Inscrit en
    Juillet 2006
    Messages
    295
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 295
    Points : 67
    Points
    67
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    [DllImport("USER32.DLL")]
            public static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
            [DllImport("USER32.DLL")]
            public static extern bool SetForegroundWindow(IntPtr hWnd);
    est ce que ces deux fonctions sont disponibles dans windows Mobile 5.0 (compact framework )??

  10. #10
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    je pense que oui... vérifie dans la doc

Discussions similaires

  1. Fermer une application ouverte par code
    Par kracter56 dans le forum MATLAB
    Réponses: 2
    Dernier message: 08/03/2013, 14h08
  2. Fermer et réouvrir une appli par code ?
    Par codial dans le forum Bases de données
    Réponses: 8
    Dernier message: 22/03/2007, 22h41
  3. Retirer une clé primaire par code
    Par Arrown dans le forum Bases de données
    Réponses: 3
    Dernier message: 28/07/2004, 15h15
  4. [VCL] Scroller un contrôle par code
    Par sbeu dans le forum Composants VCL
    Réponses: 3
    Dernier message: 31/03/2004, 10h39
  5. [VB6] Datagrid afficher ou cacher des colonnes par code
    Par soazig dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 06/02/2003, 17h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo