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 control dynamiquement


Sujet :

VB.NET

  1. #1
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    1 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 125
    Par défaut Créer control dynamiquement
    Bonjour,
    Je cherche à créer un control (par exemple button) dynamiquement car il y aura autant de button que d'enregistrement dans ma base de donnée.

    J'ai sorti cela mais ça ne marche pas et ça me parait léger.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            Dim test As New Button
            test.Left = 50
            test.Top = 20
            test.Text = "monbutton"
            test.Show()
    Merci

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    327
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 327
    Par défaut
    Bonjour,
    As-tu regardé ce topic :
    http://www.developpez.net/forums/d32...bouton-action/
    A bientôt

  3. #3
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    1 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 125
    Par défaut
    Merci du lien mais je n'ai qu'un control à l'ecran alors que je devrais en avoir 4.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
            Dim btn_Bouton As Label
            For intI As Integer = 1 To nb_enregistrement
                btn_Bouton = New Label
                btn_Bouton.Name = "Label" & intI.ToString
                btn_Bouton.TabIndex = intI
                btn_Bouton.Text = "Clic"
                MsgBox("test")
                btn_Bouton.Top = (20 + intI * 10)
                Panel_list.Controls.Add(btn_Bouton)
            Next
    La boucle est bien exécuté 4 fois car la MsgBox s'affiche 4 fois

    Comment est ce possible?
    Merci

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    tes 4 controles sont au meme endroit c'est pour ca que tu n'en vois qu'un
    il faut donc leur attribuer une place
    ou en plus simple les mettre dans un flowlayoutpanel
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    1 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 125
    Par défaut
    Mais grâce à btn_Bouton.Top = (20 + intI * 10), ils se trouvent les uns en dessous des autres, non?

  6. #6
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    Rajoute btn_Bouton.AutoSize = True pour voir.

  7. #7
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    Citation Envoyé par afrodje Voir le message
    Mais grâce à btn_Bouton.Top = (20 + intI * 10), ils se trouvent les uns en dessous des autres, non?
    j'avais pas fait gaffe mais essaye * 100 plutot que * 10
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  8. #8
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    1 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 125
    Par défaut
    C'est ok, j'arrive à voir l'ensemble des controls.

    Mais cependant, si le contrôle est de type button, comment affecter une action dessus?
    J'ai réussi à utiliser "AddHandler btn_Bouton.Click, AddressOf maProcedure"

    Mais mon problème est de savoir quel bouton à été cliqué ?
    J'ai récupéré le sender.ToString mais je ne fais pas grand chose avec cette chaine...

    Merci

  9. #9
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 202
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim b as button = directcast(sender, button)
    ensuite soit tu peux faire if b.name =
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  10. #10
    Membre confirmé Avatar de roshy
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2007
    Messages : 107
    Par défaut
    Dans maProcedure, au lieu de mettre le sender as object peux-tu le mettre sender as Button? Si ta procédure ne sert qu'à traiter des boutons, cela ne devrait pas causer de problèmes.

    Pour ce qui est de la question de départ

    Citation Envoyé par afrodje Voir le message
    Bonjour,
    Je cherche à créer un control (par exemple button) dynamiquement car il y aura autant de button que d'enregistrement dans ma base de donnée.

    J'ai sorti cela mais ça ne marche pas et ça me parait léger.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            Dim test As New Button
            test.Left = 50
            test.Top = 20
            test.Text = "monbutton"
            test.Show()
    Merci
    Moi personellement je ne metterais pas Test.Show mais plutôt test.Parent = LaForm. Et pour être sur, rajouté test.Visible = True.

  11. #11
    Membre éprouvé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    1 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 125
    Par défaut
    Citation Envoyé par roshy Voir le message
    Dans maProcedure, au lieu de mettre le sender as object peux-tu le mettre sender as Button?
    Et ensuite, cela m'apporte quoi?
    Je ne peux toujours pas différencier le bouton pressé... et récuperer au moins son nom ou libelle...

    Citation Envoyé par sperot51 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim b as button = directcast(sender, button)
    ensuite soit tu peux faire if b.name =
    Il faut juste alors mettre le nom du bouton est à égale au libellé comme ca, on peut travailler dessus simplement.

    Alors la solution :

    Pour le bouton dynamque, il faut :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AddHandler btn_Bouton.Click, AddressOf test
    pour ajouter une action.

    Et voila la procédure test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Private Sub test(ByVal sender As Button, ByVal e As System.EventArgs)
            ' Dim b As Button = DirectCast(sender, Button)
            MsgBox(sender.Name)
     
        End Sub
    Dans ce cas la, tu n'a plus besoin de DirectCast(sender, Button).....

Discussions similaires

  1. [VB6]comment supprimer dynamiquement un controle dynamique?
    Par totor le troll dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 06/07/2011, 21h10
  2. [VB.NET] Contrôle dynamique et évènements
    Par johann.C dans le forum ASP.NET
    Réponses: 4
    Dernier message: 30/11/2009, 10h45
  3. créer des control dynamiquement ?
    Par dimmu dans le forum ASP.NET
    Réponses: 4
    Dernier message: 10/05/2007, 10h47
  4. [C#]control dynamique
    Par inferno dans le forum ASP.NET
    Réponses: 5
    Dernier message: 25/08/2006, 12h08
  5. [VB6] creation et gestion de contrôle dynamique
    Par olivierx dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 23/04/2004, 00h09

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