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 toutes les forms d'une application


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut Lister toutes les forms d'une application
    Salut à tous,

    Je vais sans doute poser une question débile mais je n'arrive pas à lister toutes les forms de mon projet !

    En 2.0, il y a la propriété OpenForms mais cela ne me convient pas

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        Private Sub OuvrirEnigme(ByVal name As String)
            For Each ctrl As Control In Me.Controls
                If TypeOf ctrl Is Form Then 'vérifie que c'est une form
                    If ctrl.Name = name Then
                        ctrl.Show()
                        Me.Dispose()
                    Else
                        MsgBox("impossible de trouver")
                    End If
                End If
            Next
        End Sub
    Et j'ai remarqué que les forms ne sont pas listées, normal puisque ce ne sont pas des controles...

    Voilà merci à tous
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par Aspic Voir le message
    Et j'ai remarqué que les forms ne sont pas listées, normal puisque ce ne sont pas des controles...
    Si, les Form héritent de Control.
    Le problème dans ton code, c'est d'où apelle tu ton "Me.Controls" ?
    Tel que c'est codé, cela ne retourne rien car on ne fait pas (a priori) de Add d'une Form dans la collection Controls d'une autre.

  3. #3
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Effectivement, ce code est appelé dans une form donc il me liste seulement les controles de cette form. Or moi je souhaiterais lister toutes les forms du projets.

    Merci

    EDIT : J'en suis sur que la réponse se trouve dans System.Windows.Forms.FormCollection mais je ne trouve rien
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  4. #4
    Membre Expert
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 183
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 183
    Par défaut
    Bonjour.

    Eh non, la réponse se trouve dans l'assembly !

    Un exemple :
    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
     
    Imports System.Reflection
    Imports System.Threading
     
    ...
     
            Dim a As Assembly = System.Reflection.Assembly.GetAssembly(Me.GetType)
            'Dim ad As AppDomain = Thread.GetDomain
            'For Each a As Assembly In ad.GetAssemblies
            For Each t As Type In a.GetTypes
                If GetType(Form).IsAssignableFrom(t) Then
                    Console.WriteLine(t.FullName)
                End If
            Next
            'Next
    Ca doit lister tout ce qui est ou hérite de form.

    Je te laisse tester les lignes en commentaire, pour voir.

    Si tu as plusieurs assembly faut faire le truc pour chacun évidemment.

    MP : l'article sur le combobox avance, faut pas désepérer ...

    Question : Ca vaut le coup en FAQ ?

    Cdt.

  5. #5
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Salut,

    Ton code liste effectivement toutes les forms du projet ! Le soucis est que je souhaiterais récupérer l'objet (Form) en fonction de son Nom. Or avec ton code, je n'arrive pas à récupérer l'objet Form associé...

    PS : Tout dépens de toi, en fait une entrée pour les FAQs c'est généralement une question récurrente dont la réponse est relativement courte sinon ca passe dans la catégorie Source ou alors si tu souhaites t'y investir plus (commenter le code, mettre un exemple...), tu peux en faire un tutos
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 547
    Par défaut
    Salut Aspic,

    as tu essayé la propriété static Application.OpenForms (qui te renverra un FormCollection d'ailleurs) ? Par contre, je ne sais pas, si la collection renvoyé liste pour le thread en cours, ou sur toute l'appli.

    Bon courage. =)

    Edit : pas vu que tu avais deja essayé. Cela ne convient pas ? Que cherche tu precisement ?

  7. #7
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par olsimare Voir le message
    Ca doit lister tout ce qui est ou hérite de form.
    Euh oui ... mais visiblement ce qui l'intéresse c'est de lister les instances pas les types.

    Ce serait pas mal que Aspic précise un peu plus quel est son objectif ou son besoin fonctionnel (même si il me semble évident que la réponse de Olsimare est inappropriée).

  8. #8
    Membre Expert
    Avatar de Aspic
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    3 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2005
    Messages : 3 905
    Par défaut
    Oui donc Olsimare a compris je pense, je ne cherche pas à récupérer les forms ouvertes car il y a déjà) une méthode pour ca (OpenForm dans l'espace de nom MY).

    Je veux récupérer un objet (Form) de mon projet (form ouverte ou pas) en fonction de son nom

    J'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
            Dim a As Assembly = System.Reflection.Assembly.GetAssembly(Me.GetType)
            For Each t As Type In a.GetTypes
                If GetType(Form).IsAssignableFrom(t) Then
                    If t.FullName = name Then
                        Dim f As Object = Activator.CreateInstance(t) 'mais ca ne marche pas ici
                                            Dim f As Object = Activator.CreateInstance(GetType(Form)) 'idem
                 End If
                End If
            Next
    Je n'arrive pas a récupérer le Form !

    Merci à tous
    Qui ne tente rien n'a rien !
    Ce qui ne nous tue pas nous rends plus fort !!
    Mon projet ZELDA en C++/Allegro
    http://www.tutoworld.com - Le Forum -
    Mes ressources Dotnet (cours, sources, tutos)
    --------------------------------------------
    + + =

    Ne pas oublier le Tag !

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

Discussions similaires

  1. Sub valable pour toutes les forms d'une application
    Par serana71 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 27/05/2010, 15h49
  2. Réponses: 2
    Dernier message: 14/08/2006, 19h23
  3. [debutant] lister tout les mots d'une page web!
    Par kriskikout dans le forum Web
    Réponses: 20
    Dernier message: 31/05/2006, 22h47
  4. [MySQL] lister toutes les tables d'une base
    Par Tr@nkill dans le forum Langage SQL
    Réponses: 8
    Dernier message: 14/04/2006, 14h45
  5. Réponses: 7
    Dernier message: 27/10/2005, 14h24

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