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 :

[VB 2010] Evénement sur objet créé dynamiquement


Sujet :

VB.NET

  1. #1
    Membre régulier
    Inscrit en
    Février 2003
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 233
    Points : 72
    Points
    72
    Par défaut [VB 2010] Evénement sur objet créé dynamiquement
    Bonjour à tous,
    J'utilise Visual Basic 2010 Express, j'espère avoir posté dans la bonne catégorie.

    Dans mon petit programme, je souhaite ajouter une ou plusieurs "lignes" contenant des textbox et checkbox lorsque l'utilisateur clique sur le bouton ajouter.
    Voici un extrait simplifié du code que j'utilise à cet effet :
    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
     
     Private Sub Button_Ajt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_Ajt.Click
    contObj = contObj + 1
            Dim ChpAjtLoyLog As New TextBox()
            With ChpAjtLoyLog
                .Name = "TextBox_Surf_Appart_" & contObj
                .Top = 10 + 25 * contObj
                .Left = 330
                .Visible = True
                .Width = 70
            End With
            TabPage2.Controls.Add(ChpAjtLoyLog)
     
            Dim ChpAjtchkLog As New CheckBox()
            With ChpAjtchkLog
                .Name = "CheckBox_Appart_" & contObj
                .Top = 10 + 25 * contObj
                .Left = 430
                .Text = "Eligible"
                .Visible = True
                .Width = 130
            End With
            TabPage2.Controls.Add(ChpAjtchkLog)
     
            Button_Ajt.Top = 10 + 25 * (contObj + 1)
    Par la suite je voudrai qu'une fenêtre s'affiche si l'utilisateur coche sur l'une des checkbox.
    Si la checkbox avait été créé "normalement" je saurais bien le faire, mais comme ce n'est pas le cas, je ne sais pas trop comment aborder le problème.
    J"avais pensé faire une bouche for / next mais qui serait déclenché par quoi ? Un mouvement de curseur, serait possible, mais la bouche tournerait sans arrêt pour rien.

    Quelqu'un aurait-il une idée ?
    Merci d'avance pour vos réponses

  2. #2
    Membre expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2013
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 563
    Points : 3 404
    Points
    3 404
    Par défaut
    Tu peux associer une action à ton événement Checked !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim ChpAjtchkLog As New CheckBox()
            With ChpAjtchkLog
                .Name = "CheckBox_Appart_" & contObj
                .Top = 10 + 25 * contObj
                .Left = 430
                .Text = "Eligible"
                .Visible = True
                .Width = 130
            End With
    AddHandler ChpAjtchkLog.Checked, AddressOf MonActionARealiser()
    Profites-en pour jeter un petit coup d’œil à la documentation. Tu auras des infos intéressantes sur la gestion des événements.

  3. #3
    Membre régulier
    Inscrit en
    Février 2003
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 233
    Points : 72
    Points
    72
    Par défaut
    Merci pour cette réponse rapide et efficace !
    Simplement, il ne faut pas mettre de parenthèses :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AddHandler ChpAjtchkLog.Checked, AddressOf MonActionARealiser

  4. #4
    Membre régulier
    Inscrit en
    Février 2003
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 233
    Points : 72
    Points
    72
    Par défaut
    J'ai une autre petite question :
    Je souhaite tester si l'une des checkbox est cochée. Comme leur nom est composé avec un "index de compteur", je pense utiliser une boucle for next.
    D'autre part, comme je vais devoir effectuer des calculs avec les différentes tesxtboc qui sont crées de le même manière, je vais utiliser la même méthodologie.
    Malheureusement ça aurait été trop simple, mon code ci-dessous ne fonctionne pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim test As Boolean = False
            For i = 1 To contObj Step 1
                If CheckBox_Appart_ &i.ckecked = True Then
                    test = True
     
                End If
            Next
            If test = True Then
                MsgBox("au moins une case chochée")
            End If
    Quelqu'un aurait une piste ?
    Merci d'avance

  5. #5
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    Points : 1 511
    Points
    1 511
    Par défaut
    Bonjour,

    Il ne faut jamais baser un traitement sur le nom des variables (peut importe leur type). C'est voué à l'échec et c'est très dangereux lorsque ton code évolura.

    Le plus simple ne serait-il pas de maintenir une liste de tes checkBox pour ensuite la parcourir et tester si elles sont checked ?

    Bon code,
    J@ck.
    Pas de réponse par MP, merci.

    Penser au ça fait plaisir

  6. #6
    Membre expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2013
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 563
    Points : 3 404
    Points
    3 404
    Par défaut
    A première vue, j'aurais créé un dictionnaire avec une clef permettant d'identifier la ligne et une valeur indiquant si la CheckBox est cochée ou non. La valeur étant modifiée lors de l'appel à "MonActionARealiser".
    Une deuxième solution serait de renseigner dans le Tag une valeur permettant ensuite de boucler sur tous les éléments de ta form :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    For Each control As Control In Me.Controls
                If control.Tag.ToString = "MonIdentifieur" Then
                    'Le contrôle correspond bien à une des CheckBox que je souhaites tester
                End If
            Next

  7. #7
    Membre régulier
    Inscrit en
    Février 2003
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Février 2003
    Messages : 233
    Points : 72
    Points
    72
    Par défaut
    Merci à vous deux pour vos réponses.
    Afin d'éviter les doublons, et pour faciliter las recherches ultérieures, je vous propose de poursuivre cette discution dans le post approprié

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

Discussions similaires

  1. Ajax/Evènements sur les controles dynamiques
    Par pierre1256 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 01/02/2010, 09h59
  2. addEventListener sur objet créé dynamiquement
    Par Jim_Nastiq dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 02/10/2009, 16h20
  3. [C#/ASP.net] Evènement sur objet de session
    Par LE NEINDRE dans le forum ASP.NET
    Réponses: 6
    Dernier message: 10/08/2007, 14h49
  4. [VBA-W] Evénement sur bouton créé dynamiquement
    Par ptilo dans le forum VBA Word
    Réponses: 9
    Dernier message: 21/06/2006, 11h08

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