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 :

Ouvrir une Form à partir d'un nom de variable


Sujet :

VB.NET

  1. #1
    Membre régulier
    Inscrit en
    Mai 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Mai 2007
    Messages : 85
    Points : 93
    Points
    93
    Par défaut Ouvrir une Form à partir d'un nom de variable
    Bonjour,

    je n'ai pas trouvé de sujet similaire au mien, je vous poste donc mon petit problème du moment...

    Je souhaiterais ouvrir une Form (disons maForm.vb) à partir d'une variable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
            dim a as String
            a = "F" + tab(1) + ".vb"
    donc a correspondrais au nom complet de la Form il ne manque plus que le lien entre la classe Form et la classe String.

    Je souhaite éviter une fonction qui va tester si a.Text().equals("telleFenetre") alors ouvrir telleFenetre...

    Merci

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 175
    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 175
    Points : 25 116
    Points
    25 116
    Par défaut
    il y a plusieurs méthodes pour faire ca (enfin pas exactement ca, car après compilation il n'y a plus de notion de .vb)
    mais je préfèrerais en savoir plus sur d'où vient la variable qui te dit quelle fenetre tu va ouvrir, car il y a surement une méthode de codage plus propre

  3. #3
    Membre régulier
    Inscrit en
    Mai 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Mai 2007
    Messages : 85
    Points : 93
    Points
    93
    Par défaut
    Salut,

    Ben ma variable viendrait d'une base de donnée (d'un datareader).

    Ce que je souhaite c'est qu'en fonction du résultat de la requête j'ouvre telle ou telle fenêtre.

    Ou sinon :

    j'ai dans ma base de données une table X avec deux colonnes exercice et vbForm qui fait donc le lien entre l'exercice et la form associée.
    Récupérer le nom de la form dans la base de donnée --> pas de problème.

    Mais l'étape juste après, c'est à dire de "parser" le String que j'obtiens dans la base en Form est une difficulté que je n'arrive pas à passer

    Merci pour tes idées

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 175
    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 175
    Points : 25 116
    Points
    25 116
    Par défaut
    il y a plusieurs moyens d'instancier une classe en connaissant juste son nom

    en voici une :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim f As Form = Directcast(System.Activator.CreateInstance(System.Type.GetType("Form1", True, True)),Form)
    f.show

  5. #5
    Membre régulier
    Inscrit en
    Mai 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Mai 2007
    Messages : 85
    Points : 93
    Points
    93
    Par défaut
    Je testerais quand je serais dans mon environnement de développement

    merci

  6. #6
    Membre régulier
    Inscrit en
    Mai 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Mai 2007
    Messages : 85
    Points : 93
    Points
    93
    Par défaut
    euh
    il me dit tout simplement qu'il ne peut pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Impossible de charger le type 'FForm1' à partir de l'assembly 'MecaTest, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.
    utilisation de ta source :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim f As Form = DirectCast(System.Activator.CreateInstance(System.Type.GetType("FForm1", True, True)), Form)
            f.Show()
    une idée ?

  7. #7
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 175
    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 175
    Points : 25 116
    Points
    25 116
    Par défaut
    ca dépend aussi du namespace il faut le type complet "namespace(s).FForm1"
    par défaut il y en a un sur l'appli (voir dans paramètres du projet)

  8. #8
    Membre régulier
    Inscrit en
    Mai 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Mai 2007
    Messages : 85
    Points : 93
    Points
    93
    Par défaut
    Par défaut, le namespace est My
    mais j'ai retrouvé mon nameSpace de l'application

    donc je devrais écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Dim f As Form = DirectCast(System.Activator.CreateInstance(System.Type.GetType("monNameSpace.FForm1", True, True)), Form)
            f.Show()
    ça marche impec

    merci

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

Discussions similaires

  1. sharp develop ouvrir une form à partir du main
    Par dgkourou dans le forum C#
    Réponses: 6
    Dernier message: 17/09/2012, 19h30
  2. Ouvrir une Form en connaissant son nom
    Par DeveloppeurWeb dans le forum C#
    Réponses: 6
    Dernier message: 01/03/2012, 02h01
  3. Réponses: 5
    Dernier message: 05/01/2012, 11h59
  4. Créer une Form à partir de son nom
    Par Delphi-ne dans le forum Delphi
    Réponses: 11
    Dernier message: 11/12/2006, 17h39
  5. [VBA] Lancer une form à partir de son nom
    Par truman dans le forum Général VBA
    Réponses: 28
    Dernier message: 18/05/2006, 14h41

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