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 :

Créer un objet dont le nom est issu d'un String


Sujet :

VB.NET

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    355
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 355
    Points : 118
    Points
    118
    Par défaut Créer un objet dont le nom est issu d'un String
    Bonjour à tous

    Pour remplir une feuille avec des vignettes, j'ai besoin de créer par code un nombre non connu au départ d'objets PicturesBox.
    J'aimerai me servir d'un String que je modifierai à chaque fois et qui serai le nom de l'objet PictureBox que je créerai pour le placer sur la feuille.
    Je n'ai pas trouvé comment créer un objet dont le nom est issu d'un String.
    Quelqu'un peut-il me dire comment faire ou me proposer une autre solution ?
    Merci de votre réponse

    Claude Azoulai

  2. #2
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Points : 4 232
    Points
    4 232
    Par défaut
    Bonjour,
    en gros tu fais comme dans cette discussion : http://www.developpez.net/forums/d90...-feuille-code/
    et tu rajoutes la propriété .name à laquelle tu assignes ton string.
    genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim Picture1 As New PictureBox
            With Picture1
                .Left = 10
                .Top = 10
                .Width = 100
                .Height = 100
                .Visible = True
                .Name = MonStringName
            End With
            Me.Controls.Add(Picture1)

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    355
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 355
    Points : 118
    Points
    118
    Par défaut
    Merci à Sankasssss
    J'ai du mal m'expliquer. si je crée deux objets avec le mème nom d'objet, même avec deux propriétés .name différentes et que je les charge sur ma feuille, seule la dernière reste sur la feuille.
    Normal puisque ils s'appellent tous les deux Picture1.
    C'est justement le nom de l'objet à savoir Picture1, Picture2, Picture3 etc... que je veux créer par code sans être obligé de mettre une dizaine de lignes de code pour chaque PictureBox car il peut en avoir plusieur centaines sur une feuille.
    J'espère avoir mieux présenté mon problème.

    Claude Azoulai

  4. #4
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Points : 4 232
    Points
    4 232
    Par défaut
    Un objet n'a pas vraiment de nom, le nom de ta variable qui contiendra l'objet, à savoir Picture1 dans notre cas, importe peu, tout ce que tu dois faire attention, c'est de bien changer la position de tes control , si tu les empiles, c'est normale que tu n'en voie qu'une
    Pour preuve, tu peux créer des control en faisant une boucle et en incrémentant les positions du control .
    Chaque control étant créé dans une variable qui aura toujours le même nom mais qui contiendra a chaque tour une nouvelle instance d'objet, donc un nouveau control . Le control précédent ne disparait pas vu qu'il est ajouté à la collection de control de ta form...

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    355
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 355
    Points : 118
    Points
    118
    Par défaut
    Bonjour
    Je te remercie de ne pas me laisser tomber.
    C'est bien ce que j'ai essayé de faire avant mon dernier message.
    Voici le code
    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
     
    Public Class Form1
     
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim Picture1 As New PictureBox
            With Picture1
                .Left = 10
                .Top = 10
                .Width = 60
                .Height = 80
                .Visible = True
                .Name = "Pic1"
                .SizeMode = PictureBoxSizeMode.StretchImage
                .Image = Image.FromFile("C:\Toto.jpg")
            End With
            Me.Controls.Add(Picture1)
            With Picture1
                .Left = 100
                .Top = 10
                .Width = 60
                .Height = 80
                .Visible = True
                .Name = "Pic2"
                .SizeMode = PictureBoxSizeMode.StretchImage
                .Image = Image.FromFile("C:\Titi.jpg")
            End With
            Me.Controls.Add(Picture1)
        End Sub
    End Class
    J'ai bien changé la position du deuxème contrôle avant de l'ajouter à la collection, mais seul le deuxième contrôle est visible.
    Si je sort de la routine avant le deuxième With, le premier contrôle est bien là.
    Il manque peut-être quelque chose ?
    Veux-tu bien y jeter un coup d'oeil s'il te plait ?
    Merci de ta réponse

    Claude Azoulai

  6. #6
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Points : 4 232
    Points
    4 232
    Par défaut
    apres avoir sauvegarder le 1er control dans ta colection tu dois recreer un nouvel objet avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Picture1 = New PictureBox
    aussi non tu modifies le 1er composant, tu lui changes ca place et son nom...

    ce qui nous donne :
    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
     
    Public Class Form1
     
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim Picture1 As New PictureBox
            With Picture1
                .Left = 10
                .Top = 10
                .Width = 60
                .Height = 80
                .Visible = True
                .Name = "Pic1"
                .SizeMode = PictureBoxSizeMode.StretchImage
                .Image = Image.FromFile("C:\Toto.jpg")
            End With
            Me.Controls.Add(Picture1)
            Picture1 = New PictureBox
            With Picture1
                .Left = 100
                .Top = 10
                .Width = 60
                .Height = 80
                .Visible = True
                .Name = "Pic2"
                .SizeMode = PictureBoxSizeMode.StretchImage
                .Image = Image.FromFile("C:\Titi.jpg")
            End With
            Me.Controls.Add(Picture1)
        End Sub
    End Class
    ou

    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
     
    Public Class Form1
     
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim Picture1 As New PictureBox
            With Picture1
                .Left = 10
                .Top = 10
                .Width = 60
                .Height = 80
                .Visible = True
                .Name = "Pic1"
                .SizeMode = PictureBoxSizeMode.StretchImage
                .Image = Image.FromFile("C:\Toto.jpg")
            End With
            Me.Controls.Add(Picture1)
            Dim Picture2 As New PictureBox
            With Picture2 
                .Left = 100
                .Top = 10
                .Width = 60
                .Height = 80
                .Visible = True
                .Name = "Pic2"
                .SizeMode = PictureBoxSizeMode.StretchImage
                .Image = Image.FromFile("C:\Titi.jpg")
            End With
            Me.Controls.Add(Picture2)
        End Sub
    End Class

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    355
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 355
    Points : 118
    Points
    118
    Par défaut
    Merci pour ton aide.
    Ca a marché et j'en comprend mieu le fonctionnement grace à toi.

    Claude Azoulai

  8. #8
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Points : 4 232
    Points
    4 232
    Par défaut
    De rien, le forum est la pour ca
    Essaye d'être complet dès ton premier post, met tout ton code, comme ca c'est plus facile, et plus rapide pour la personne qui t'aide
    Bonne journée, et bon codage

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

Discussions similaires

  1. [Débutant] Créer un répertoire dont le nom est la date en visual basic express 2010
    Par debutant007 dans le forum VB.NET
    Réponses: 6
    Dernier message: 25/02/2015, 18h22
  2. Créer un objet dont la classe est une variable
    Par jibe38 dans le forum Langage
    Réponses: 15
    Dernier message: 14/05/2014, 12h58
  3. Créer un variable dont le nom est une valeur de la base
    Par nicolas2603 dans le forum Langage
    Réponses: 3
    Dernier message: 25/09/2009, 10h45
  4. Méthode JS qui crée des objets dont le nom est recu en paramètre
    Par power of mind dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 31/07/2009, 14h44
  5. [POO] Désactiver un objet dont le nom est passé en parametre
    Par JavaEli dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 12/07/2005, 09h47

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