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

Windows Forms Discussion :

[MDI] fenêtre fille toujours au premier plan


Sujet :

Windows Forms

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    423
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 423
    Points : 188
    Points
    188
    Par défaut [MDI] fenêtre fille toujours au premier plan
    Salut

    J'ai Une fenêtre MDI qui contient plusieurs fenêtres filles (logique )
    J'aimerais que l'une d'elle soit toujours au premier plan. Même si c'est une autre fenêtre qui est active et qui est, éventuellement, maximisée.

    Est-ce possible de faire cela ? J'ai entendu parler de la propriété TopMost mais cela ne semble pas fonctionner.

  2. #2
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    beh normalement, oui TopMost te positionne la fenetre au dessus des autres

    Maintenant, si ca marche vraimetn pas, tu peux toujours essayer des fonctions de l'API Win32 genre : SetwindowPos qui fonctionne tres bien

    The Monz, Toulouse

    PS : pour info , j'ai utilisé ce genre de fonction pour un outil de gestion
    de la disposition des fenetres piloté par des configurations (en XML) de positionnement des différentes fenetres (dans le cadre d'un simulateur ferroviaire )

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    423
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 423
    Points : 188
    Points
    188
    Par défaut
    Bon, apparemment TopMost s'applique uniquement pour la fenêtre principale. Dans ce cas là mon programme reste bien au dessus de tous les autres.
    Par contre dans le cas de fenêtre fille dans une MDI ça ne va pas

  4. #4
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    Tu voudrais un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [DllImport("user32.dll")]
            static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
    Et (mais pas dans le constructeur, mais ou tu veux ailleurs)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    private void Form1_Load(object sender, EventArgs e)
            {
                Form2 f = new Form2();
                f.MdiParent = this;
                f.Show();
                Form3 f3 = new Form3();
                f3.MdiParent = this;
                f3.Show();
     
                SetParent(f3.Handle, this.Handle);
            }
    Et voila, dans mon exemple, le f3 sera TOUJOURS DEVANT quoi que tu fasses

    Magik ?

    The Monz, Toulouse


    PS : Ca meriterait d'apparaitre dans la FAQ ça ? non ?

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    423
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 423
    Points : 188
    Points
    188
    Par défaut
    Ca à l'air d'être ok. merci

    Heu... ça fait quoi le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [DllImport("user32.dll")]
    static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
    ?


    Oui ça mériterait d'être dans la FAQ.

  6. #6
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    le SetParent permet de dire qui est le parent (non sans blague, j'suis sur
    que tu t'en étais pas douté

    J'ai trouvé ce code sur le net.. Sans explication, et dans la doc MSDN, le Set parent ne fait que dire :

    "Changes the parent window of a child window."

    Donc, c'est "assez" mystérieux; mais bon, ca marche

    The Monz, Toulouse

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

Discussions similaires

  1. Réponses: 16
    Dernier message: 19/01/2012, 22h48
  2. [Débutant] Fenêtre toujours au premier plan
    Par zlikos dans le forum Windows Forms
    Réponses: 7
    Dernier message: 03/04/2009, 18h37
  3. programme toujours au premier plan et background grisé
    Par avogadro dans le forum Langage
    Réponses: 5
    Dernier message: 28/03/2006, 21h46
  4. Faire une fenêtre qui reste au premier plan
    Par Mandelbrot dans le forum Windows
    Réponses: 6
    Dernier message: 13/03/2006, 19h34
  5. [C#][.Net] Affichage d'une appli toujours au premier plan
    Par alncool dans le forum Windows Forms
    Réponses: 9
    Dernier message: 13/07/2005, 12h30

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