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 sans connaitre son nom à l'avance


Sujet :

VB.NET

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 84
    Points : 52
    Points
    52
    Par défaut Ouvrir une form sans connaitre son nom à l'avance
    Bonjour,

    J'ai une appli VB .net 2010.

    J'ai besoin d'ouvrir un form.
    par contre je ne connais pas son nom et c'est l'utilisateur qui saisi son nom.

    Par exemple il tape toto et je dois ouvrir la form du même nom.
    Existe t-il une possibilité de le faire ? Du style form("toto").Show()

    Merci pour votre aide

    Dan

  2. #2
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    A partir de la saisie utilisateur tu peux retrouver le type. Ensuite tu peux créer une instance en utilisant Activator.CreateInstance et enfin tu peux caster l'instance en Form et utiliser Show

    http://msdn.microsoft.com/en-us/library/d133hta4.aspx

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 84
    Points : 52
    Points
    52
    Par défaut
    Merci pour cette réponse.

    Grâce à cette piste, j'ai découvert une pépite : http://vbcity.com/forums/t/32930.aspx

    Par contre il existe un autre problème maintenant.

    Lorsque j'ouvre ma form. Elle est "inerte". Elle s'affiche bien mais lorsque je clique sur les boutons (je vois bien le bouton s'enfoncer) mais rien ne se passe.

    Voilà mon code pour appeler la form
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Dim T As Type = Type.GetType("mon_namespace.form_toto", True, True)
    Dim frm As Form = CType(Activator.CreateInstance(T), Form)
    frm.show()
    En cherchant un peu plus loin, si je met un simple msgbox derrière le bouton, il fonctionne. Par contre mes boutons font appels à des fonctions dans des modules. Ces modules activent des parties de ma form via form_toto.ma_groupbox.visible=yes. Et c'est ces commandes qui sont désactivées quand j'utilise Activator.CreateInstance.

    Guda

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 172
    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 172
    Points : 25 112
    Points
    25 112
    Par défaut
    c'est parce que tu as fais ce qu'il ne fallait pas faire
    vb autorise de manipuler une form par son nom, or ceci est contraire à la POO
    en POO (et en c#) on ne peut pas taper le nom d'un form pour l'utiliser, il faut avoir une instance
    car à un instant T on est autorisé à avoir plusieurs instances d'une fenetre ouverte, et en nommant le form, vb ne peut en voir qu'une et donc pas la bonne dans ton cas mais une invisible

    et les modules il faut éviter
    donc il faut que tu recodes avec une classe qui demande une instance du form pour le modifier
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 84
    Points : 52
    Points
    52
    Par défaut
    Ok c'est noté

    Merci pour votre aide

    guda

  6. #6
    Membre actif Avatar de AcidLines
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Février 2010
    Messages : 198
    Points : 279
    Points
    279
    Par défaut
    Bonjour,

    Un petit bout de code tout bête, (faire la différence entre le .name et le .text, le name et le vrai nom de ta form et le .text n'est que le titre qui s'affiche dans la barre de fenêtre)

    J'ai ici une premiere form avec textbox et bouton
    Et une deuxieme form qui sera instanciée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Public Class f_main
    Private Sub B_executerInstance_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles B_executerInstance.Click
     
    Dim laFormUtilisateur As Formulaire_à_instancier
     
    laFormUtilisateur = New Formulaire_à_instancier
     
    laFormUtilisateur.Name = TBX_saisieInstance.Text
    laFormUtilisateur.Text = TBX_saisieInstance.Text
     
    laFormUtilisateur.Show()
     
    End Sub
    En faisant ainsi, tout les contrôles de ta form instancié seront correctement abonnés à leur évènement.

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

Discussions similaires

  1. Ouvrir une Form en connaissant son nom
    Par DeveloppeurWeb dans le forum C#
    Réponses: 6
    Dernier message: 01/03/2012, 02h01
  2. Instancier une classe sans connaitre son nom
    Par Molkobain dans le forum Langage
    Réponses: 8
    Dernier message: 16/02/2009, 14h49
  3. modifier une propriété sans connaitre son nom
    Par cyberchand dans le forum C#
    Réponses: 2
    Dernier message: 17/04/2007, 16h17
  4. Comment ouvrir un fichier sans connaitre son nom
    Par APoLLoN1234 dans le forum C++
    Réponses: 8
    Dernier message: 10/09/2006, 18h04
  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