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

VB.NET Discussion :

Liste de tous les formulaires


Sujet :

VB.NET

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Géomaticien
    Inscrit en
    Avril 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Géomaticien

    Informations forums :
    Inscription : Avril 2009
    Messages : 21
    Points : 26
    Points
    26
    Par défaut Liste de tous les formulaires
    Bonjour,

    Je développe une application avec de nombreux formulaires (sous Visual Studio) et j'aimerai savoir s'il existe un moyen de lister tous les formulaires d'un projet afin d'ouvrir celui dont on connait le nom.

    Je sais que l'on peut lister les formulaires ouverts avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Application.OpenForms.Count
    et qu'on peut ouvrir un formulaire en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    monform = New nomduformulairetype
    Mais comme j'ai pas mal de formulaires j'aimerai passé de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    If nom = "f_arbre" Then
    monform = New f_arbre
    ElseIf nom = "f_maison" Then
    monform = New f_maison
    'etc ...
    End If
    à quelque chose comme ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For Each form In ????
    If form.name = nom Then
    monform = New form
    Exit For
    End If
    Next
    J'ai cherché sur le Net mais je n'ai pas trouvé ce qui pourrait correspondre aux "?????"

    Est ce que seulement c'est possible ou faut-il que je continue avec mes If/ElseIf (que je vais passé en Select Case) en incrémentant chaque nouveau formulaire ?

    Cordialement

    Nicolas

  2. #2
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 757
    Points : 10 541
    Points
    10 541
    Billets dans le blog
    21
    Par défaut
    Bonjour,

    Le plus simple est d'utiliser la réflexion. Tu peux utiliser Type.GetType pour récupérer des informations sur une classe en particulier (ici, une form). Ensuite, à partir de ces informations, tu peux instancier ton formulaire en utilisant Activator.CreateInstance.
    François DORIN
    Consultant informatique : conception, modélisation, développement (C#/.Net et SQL Server)
    Site internet | Profils Viadéo & LinkedIn
    ---------
    Page de cours : fdorin.developpez.com
    ---------
    N'oubliez pas de consulter la FAQ C# ainsi que les cours et tutoriels

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Géomaticien
    Inscrit en
    Avril 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Géomaticien

    Informations forums :
    Inscription : Avril 2009
    Messages : 21
    Points : 26
    Points
    26
    Par défaut
    Merci pour ton aide, je ne connaissais pas la réflexion.
    En suivant tes pistes et en fouillant sur le Net je suis arrivé à ce bout de code qui fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim lassembly As Reflection.Assembly
    Dim objType() As Type
    Dim ftest as Form
    lassembly = Reflection.Assembly.GetExecutingAssembly()
    objType = lassembly.GetTypes()
    For Each objet As Type In objType
    If objet.Name = nomduformulaire Then
    ftest = CType(Activator.CreateInstance(objet), Form)
    Exit For
    End If
    Next
    Bonne journée

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

Discussions similaires

  1. [FAQ] Fermer tous les formulaires ouverts
    Par guigui5931 dans le forum Contribuez
    Réponses: 19
    Dernier message: 15/02/2024, 16h57
  2. Réponses: 1
    Dernier message: 27/05/2011, 16h44
  3. Liste de tous les évènements possibles sur un formulaire
    Par Zhebulon dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 18/06/2007, 08h54
  4. Réponses: 1
    Dernier message: 19/08/2006, 10h27
  5. [VB.net 2005] Rendre tous les formulaires invisibles
    Par PoZZyX dans le forum Windows Forms
    Réponses: 1
    Dernier message: 29/05/2006, 14h23

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