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 :

Probleme de passage en arriere plan si j'appelle SaveFileDialog


Sujet :

C#

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 002
    Par défaut Probleme de passage en arriere plan si j'appelle SaveFileDialog
    Bonjour à tous,

    Quelqu'un peut m'expliquer pourquoi après un appel à un SaveFileDialog, si je fait un ShowDialog, la fenêtre passe en arrière plan !!!

    Exemple de test pour reproduire le bug:
    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
    33
    34
    35
    36
     
    using System;
    using System.Collections.Generic;
    using System.Windows.Forms;
     
    namespace BugSaveDialog
    {
        static class Program
        {
            /// <summary>
            /// The main entry point for the application.
            /// </summary>
            [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
     
                using (Form f1 = new Form())
                {
                    f1.ShowDialog();
                }
     
                using (SaveFileDialog saveForm = new SaveFileDialog())
                {
                    saveForm.ShowDialog();
                }
     
                using (Form f2 = new Form())
                {
                    f2.ShowDialog();
                }
     
            }
        }
    }
    Comment faire pour que f2 soit au premier plan ? (je crois que BringToFront ne marche pas...)
    Et par curiosité Pourquoi ca fait ca ??


    merci !

    Edit
    je suis pas le seul à avoir rencontré le problème:
    http://www.developpez.net/forums/d61...an-showdialog/

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 002
    Par défaut
    J'ai mis à jour l'exemple afin de le simplifier

    L’hypothèse que je peux faire pour le moment, c'est que sur des Forms on a pas de problème, que SaveFileDialog n'est pas une form et il doit faire partie des couches basses Win32.

    Comme l'application n'a pas de Form principale, la pompe à message Windows, doit complétement décrocher au passage du SaveFileDialog, Windows prend une autre Fenêtre pour la mettre au premier plan...

  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 : 43
    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
    Par défaut
    Tu as essayé de mettre Application.Run(f2) au lieu de f2.ShowDialog() ?

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 002
    Par défaut
    tomlev

    Merci de te pencher (une nouvelle fois) sur le problème !

    Avec Application.Run ca n'a pas l'air de résoudre ce fameux problème...
    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
    33
    34
    35
    36
    37
    38
    39
     
    using System;
    using System.Collections.Generic;
    using System.Windows.Forms;
     
    namespace BugSaveDialog
    {
        static class Program
        {
            /// <summary>
            /// The main entry point for the application.
            /// </summary>
            [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
     
     
                using (Form f1 = new Form())
                {
                    //Application.Run(f1);
                    f1.ShowDialog();
                }
     
                using (SaveFileDialog saveForm = new SaveFileDialog())
                {
                    saveForm.ShowDialog();
                }
     
                using (Form f2 = new Form())
                {
                    Application.Run(f2); // la Form passe en arrière plan !!!
                    //f2.ShowDialog();
                }
     
            }
        }
    }

  5. #5
    Membre actif
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2011
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2011
    Messages : 71
    Par défaut
    Salut,

    Voici la solution :
    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
    33
    34
    35
    36
    37
     
    using System;
    using System.Collections.Generic;
    using System.Windows.Forms;
     
    namespace BugSaveDialog
    {
        static class Program
        {
            /// <summary>
            /// The main entry point for the application.
            /// </summary>
            [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
     
                using (Form f1 = new Form())
                {
                    Application.Run(f1);
                    //f1.ShowDialog();
                }
     
                using (Form f2 = new Form())
                {
                    using (SaveFileDialog saveForm = new SaveFileDialog())
                    {
                        saveForm.ShowDialog(f2);
                    }
                    Application.Run(f2); // la Form passe en arrière plan !!!
                    //f2.ShowDialog();
                }
     
            }
        }
    }

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 002
    Par défaut
    brnf1
    Merci !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. probleme affichage une image arriere plan
    Par sooprano dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 09/02/2009, 18h00
  2. Probleme de definition d'arriere plan sous firefox
    Par black_hole dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 15/12/2007, 22h27
  3. probleme arriere plan cellule et checkbox
    Par guismoman33 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 22/11/2007, 01h05
  4. probleme d'image d'arriere-plan
    Par vero55 dans le forum Word
    Réponses: 3
    Dernier message: 04/07/2007, 08h47
  5. Probleme de passage d'une fenetre en arriere plan
    Par fripon dans le forum Windows Forms
    Réponses: 4
    Dernier message: 27/01/2007, 15h35

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