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 :

Lister les fenêtres ouvertes OU mettre une fenêtre en premier plan


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 259
    Points : 97
    Points
    97
    Par défaut Lister les fenêtres ouvertes OU mettre une fenêtre en premier plan
    Bonjour à tous,

    Je travaille avec le framework 1.1

    A l'ouverture d'une application, je lance un thread pour faire une vérification et récupérer des données sur un serveur distant.

    Mais le temps que le thread obtienne sa réponse, l'utilisateur peut, entre temps, avoir ouvert des fenêtres modales.
    Selon la réponse du thread, il faut que je mette une fenêtre en premier plan et il faut que l'utilsateur ne puisse accéder à rien d'autre (donc une super fenêtre modale).

    1ere solution : mettre la fenêtre au 1er plan. J'ai essayé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        Public Sub BringFormToMe()
            If Me.WindowState = FormWindowState.Minimized Then
                Me.WindowState = FormWindowState.Normal
                Me.Activate()
            Else
                Me.Activate()
            End If
        End Sub
    La fenêtre se met bien en avant plan mais rien n'empêche l'utilisateur de la remettre en arrière plan.

    2e solution : lister toutes les fenêtres filles de la form principale et les fermer pour que la seule form modale ouverte soit celle que je veux ouvrir.

    Mais je n'arrive pas à obtenir les instances de form ouvertes.

    Est-ce que vous auriez une solution à m'apporter ?
    Toute suggestion est la bienvenue.

    Merci d'avance.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 259
    Points : 97
    Points
    97
    Par défaut
    Je viens de trouver la propriété Me.TopMost = True (Me étant la form)
    Mais ça n'empêche pas l'utilisateur d'accéder à la fenêtre en arrière plan.

    Si vous avez des idées, je suis preneur.

    Merci

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 259
    Points : 97
    Points
    97
    Par défaut
    Up ?

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    deja, ca c'est plus propre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        Public Sub BringFormToMe()
            If Me.WindowState = FormWindowState.Minimized Then
                Me.WindowState = FormWindowState.Normal
            End If
            Me.Activate()
        End Sub
    pour que ta fenetre ne puisse pas partir du premier plan il faut qu'elle soit modale
    c'est au moment de l'ouverture que ca se précise
    frm.show ou frm.showDialog pour qu'elle soit modale
    je ne pense pas qu'il soit possible de changer la propriété modal une fois que la fenetre est ouverte

    pour lister les fenetres actuellement ouvertes :
    For Each FRM As System.Windows.Forms.Form In System.Windows.Forms.Application.OpenForms
    _ _ ' code
    Next
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 259
    Points : 97
    Points
    97
    Par défaut
    Bonjour sperot51,

    J'ai essayé ce bout de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each FRM As System.Windows.Forms.Form In System.Windows.Forms.Application.OpenForms
    _ _ ' code
    Next
    Mais j'obtiens l'erreur :
    'OpenForms' is not a member of 'System.Windows.Forms.Application'.

    D'après mes recherches, il semble que OpenForms soit accessible seulement à partir du framework 3.0
    Je travaille malheureusement avec le framework 1.1 et je n'ai pas la possibilité de faire autrement.

  6. #6
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    c'est accessible sur le 2, le 1.1 fait quand meme beaucoup de choses en moins que le 2 ....
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

Discussions similaires

  1. Mettre une fenêtre en avant sur une interface VB
    Par khelilo dans le forum VB.NET
    Réponses: 3
    Dernier message: 07/03/2013, 13h49
  2. Réponses: 3
    Dernier message: 10/05/2012, 14h35
  3. Réponses: 0
    Dernier message: 27/02/2009, 12h34
  4. Réponses: 1
    Dernier message: 09/02/2008, 18h55
  5. Réponses: 2
    Dernier message: 07/02/2005, 16h43

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