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 :

Nom de WinForm dynamique


Sujet :

VB.NET

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur multimédia
    Inscrit en
    Janvier 2014
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2014
    Messages : 62
    Points : 48
    Points
    48
    Par défaut Nom de WinForm dynamique
    Bonsoir,

    Je développe une application, dans laquelle je souhaite ouvrir plusieurs instances d'un même Formulaire (en VB.net)

    Je souhaiterais donc pouvoir leur donner un nom dynamiquement :

    J'ai un variable z (string)

    et je voudrais pouvoir faire
    Dim Form & z as New MonForm
    et également passer à cette nouvelle "fenêtre" la variable z

    Mais je ne trouve pas de moyen de faire cela.

    Pourriez-vous m'aider ?

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    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 154
    Points : 25 072
    Points
    25 072
    Par défaut
    si c'est plusieurs instances d'un même formulaire, tu n'as pas besoin de nom dynamique

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dim f1 as new form2
    dim f2 as new form2
    si tu veux en ouvrir 10
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for x as integer = 1 to 10
      dim f as new form2
      f.show
    next
    si tu veux pouvoir les retrouver

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    private _forms as new list(of form2)
     
    private sub open
      for x as integer = 1 to 10
        dim f as new form2
        _forms.Add(f)
        f.show
      next
    end sub
    si par contre c'est pas le nom de la classe que tu veux faire une nouvelle form (donc des instances de formulaires différents) il faut passer par activator.Createinstance qui permet d'instancier une classe à partir de son nom (ou alors à partir du type mais on peut retrouver un type par son nom)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur multimédia
    Inscrit en
    Janvier 2014
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2014
    Messages : 62
    Points : 48
    Points
    48
    Par défaut
    Merci pour ta réponse.

    Comment passer à ces nouveaux forms la valeur de x par exemple, là où tu mets

    x = 1 to 10

    ?

  4. #4
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    Citation Envoyé par figolu77 Voir le message
    Merci pour ta réponse.

    Comment passer à ces nouveaux forms la valeur de x par exemple, là où tu mets

    x = 1 to 10

    ?
    Bonsoir figolu77,

    Passage de parametre(s) entre deux Form

    A+

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur multimédia
    Inscrit en
    Janvier 2014
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2014
    Messages : 62
    Points : 48
    Points
    48
    Par défaut
    Désolé de ne pas comprendre, mais voilà :

    Je fais donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            For x As Integer = 1 To 3
                Dim f As New ControlPanel
                Dim Var As String = "test"
                f.Show()
            Next
    A l'ouverture du nouveau form (f), je n'arrive pas à récupérer la valeur de Var dans le nouveau form qui s'est ouvert.

  6. #6
    Expert confirmé
    Avatar de wallace1
    Homme Profil pro
    Administrateur systèmes
    Inscrit en
    Octobre 2008
    Messages
    1 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 966
    Points : 4 005
    Points
    4 005
    Billets dans le blog
    7
    Par défaut
    1 - tu créés un projet avec 1 Form nommé "Form1" par défaut
    2 - tu ajoutes 1 formulaire depuis ton explorateur de solutions (clique-droit sur le nom de ton projet en haut dans le volet de droite puis "Ajouter/Formulaire")
    3 - dans ton explorateur de solutions tu as maintenant 2 Forms (Form1 et Form2)
    4 - tu passes en mode code dans ton Form2
    5 - tu saisis : "Public Sub New" (dans le corps de ta classe Form2 = entre "Public Class Form2 et End Class"). L'autocomplétion fait le reste
    6 - te voilà avec cela comme code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Public Class Form2
     
        Public Sub New()
        End Sub
     
    End Class
    7 - tu ajoutes 1 argument (param) dans la signature de ta SubNew et une variable privée (_Str) à ton Form2 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Public Class Form2
        Private _Str As string = String.empty
     
        Public Sub New(Byval param As String)
           _Str = param
           'On affecte le paramètre au titre de fenêtre pour vérifier que cela fonctionne. C'est juste pour l'exemple car c'est inutile de déclarer une variable _Str alors que la donnée est dispo depuis la variable "param" !
           Me.Text = _Str
           'Ou comme cela au sein de la SubNew uniquement : Me.Text = param
        End Sub
     
    End Class
    A NOTER : La variable _Str sera disponible dans l'ensemble de ta Class Form2 !


    Enfin depuis ton Form1 tu instancies 1 Form2 (f2) avec 1 paramètre (LeParamètre) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Public Class Form1
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim f2 as New Form2("LeParamètre")
            f2.Show()
        End Sub
    End Class
    Voilà tout.

    A+

  7. #7
    Membre du Club
    Homme Profil pro
    Développeur multimédia
    Inscrit en
    Janvier 2014
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2014
    Messages : 62
    Points : 48
    Points
    48
    Par défaut
    Vraiment pas envie d'insister, mais en suivant tes conseils, j'ai malgré tout un message d'erreur me disant :

    Erreur 1 Argument non spécifié pour le paramètre 'param' de 'Public Sub New(param As String)'.

    Et mes connaissances ne m'aident pas...

  8. #8
    Membre du Club
    Homme Profil pro
    Développeur multimédia
    Inscrit en
    Janvier 2014
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2014
    Messages : 62
    Points : 48
    Points
    48
    Par défaut
    Sorry,

    Cela fonctionne, simplement en essayant ceci dans le nouveau form :
    Me.Label2.Text = param

    J'ai le message d'erreur suivant :
    La référence d'objet n'est pas définie à une instance d'un objet.

    ...

  9. #9
    Membre du Club
    Homme Profil pro
    Développeur multimédia
    Inscrit en
    Janvier 2014
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2014
    Messages : 62
    Points : 48
    Points
    48
    Par défaut [Resolu]
    Merci beaucoup wallace1 pour ton aide. Tout est ok.

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

Discussions similaires

  1. Noms de Variables dynamiques
    Par horec dans le forum Langage
    Réponses: 7
    Dernier message: 22/07/2005, 16h47
  2. Nom de fonction dynamique
    Par gege2061 dans le forum C
    Réponses: 2
    Dernier message: 21/06/2005, 14h44
  3. Nom d'instance dynamique
    Par doof dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 21/12/2004, 03h23
  4. [FLASH MX] Nom de composant dynamique
    Par bobgeldof7 dans le forum Flash
    Réponses: 2
    Dernier message: 12/11/2004, 23h07
  5. [SQL SERVER 2000] Noms de variables dynamiques
    Par cassoulet dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 08/09/2004, 11h44

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