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 des fenêtres dynamiquement selon le type


Sujet :

VB.NET

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 120
    Points : 67
    Points
    67
    Par défaut ouvrir des fenêtres dynamiquement selon le type
    Bonjour,

    Je souhaiterai faire un bouton (ça fastoche) qui va ouvrir telle ou telle Form selon une variable qui contient le Type de la fenêtre à ouvrir.
    Comment faire pour qu'au clic, il ouvre le bon Formulaire selon la variable? comment faire le cast en dynamique? Est ce possible de faire sans?
    Je ne sais pas si c'est clair... Merci de vos réponses


    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    Public Class WinForm1
        End Class 
     
    Public Class WinForm2
        End Class 
     (...)
    Public Class WinFormX
        End Class 
     
     
     
    Class Progamm
     
    Dim typeAOuvrir as Type
     
    Sub new (oType as Type)
     typeAOuvrir = oType
    end sub
     
    Private Sub SplValider_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SplValider.Click
     
     ' Instance dynamique de la fenêtre
                Dim objFenetreAOuvrir As Object = System.Activator.CreateInstance(typeAOuvrir ) 
     
    'après que faire pour ouvrir WinForm1, WinForm2, WinFormX... ou ?...
    'comment faire le cast en dynamique?
     
     
    End sub
     
    End class

  2. #2
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Bonjour, il suffit de déclarer ta variable en type "mère", c'est à dire de type Forms.
    Grâce à la magie de l'héritage, ça fonctionne bien.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim MaFrom as Form
     
    Select Case MonType
     
         case "type1"
                MaFrom = new Formtype1
     
     
    End Select
     
    MaFrom.show()
    Edit : a j'avais mal lu et que tu voulais typer dynamiquement....

    [EDIT 2]
    Du coup, si tu veux obtenir un type a partir d'un nom, il faudra surement creuser du côté de la réflexion.
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 120
    Points : 67
    Points
    67
    Par défaut
    Merci pour la réponse mais oui effectivement, mon objectif est justement d'éviter le select case.
    Et je souhaite passer le type (system.type) de la fenêtre en variable

  4. #4
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    En fait tu y étais... T'avais un problème car tu n'as pas déclarer ta variable en Form... Ce qui t’empêchais d’ouvrir la fenêtre.
    Tu peux essayer ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim objFenetreAOuvrir As Form 
    objFenetreAOuvrir  = CType(System.Activator.CreateInstance(typeAOuvrir),Form)
     
    objFenetreAOuvrir  .Show()
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 120
    Points : 67
    Points
    67
    Par défaut
    bah oui, tout bête...
    ok merci!

  6. #6
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Oubli pas de passer la discussion en résolu !
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 120
    Points : 67
    Points
    67
    Par défaut
    oui, oui, voilà voilà.. le temps de tester un peu

    Dynamically Launching A WinForm Via Object Factory:
    https://msdn.microsoft.com/en-us/library/ee794614.aspx

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

Discussions similaires

  1. Ouvrir une fenêtre à partir d'un type="radio"
    Par mioke dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 20/08/2008, 16h44
  2. Réponses: 1
    Dernier message: 03/07/2008, 20h48
  3. [Serialisation] Comment faire dynamiquement selon le type ?
    Par eric.charbonnier dans le forum Framework .NET
    Réponses: 7
    Dernier message: 01/02/2008, 15h17
  4. [PHP-JS] Ouvrir des fenêtres popup avec php
    Par bodysplash007 dans le forum Langage
    Réponses: 23
    Dernier message: 21/02/2007, 11h52
  5. Prise en compte des virgules aléatoire selon le type de curseur ?
    Par mosquitout dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 25/07/2006, 19h48

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