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 :

Comment capter le click sur un radiobutton créé par code?


Sujet :

VB.NET

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 44
    Points : 26
    Points
    26
    Par défaut Comment capter le click sur un radiobutton créé par code?
    Bonjour,

    Je crée des radiobuttons par code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim RadioButton As New System.Windows.Forms.RadioButton
    For i = 0 To NombreLigne
           RadioButton.Name = "RadioButton" & i.ToString
           RadioButton.Location = New Point(120, 150 + (i * 50))
           Controls.Add(RadioButton)
           RadioButton = New System.Windows.Forms.RadioButton
    Next i
    Seulement ces radiobutton n'exitent pas physiquement.

    Lors de l'execution de mon appli, je clique sur les boutons et ils changent d'état.

    Jusque là tout va bien.

    Maintenant, j'aimerai capter le click sur les boutons et savoir sur lequel j'ai cliqué.

    Comment dois-je commencer?
    D'après ce que j'ai trouvé sur le net, il semble que je doive créer un évènement_click de toute pièce.

    J'ai essayé. Je n'y arrive pas.

    Merci pour votre aide, pour la solution la plus simple s'il y en a une que créer un évènement.

  2. #2
    Membre chevronné
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    Bonsoir,

    Il te fait en effet écrire une méthode qui servira à réceptionner l'évènement, sur le même schéma qu'une méthode "classique", en respectant la signature attendue par l'évènement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub MyRadioButtons_Click(ByVal sender As Object, ByVal e As EventArgs)
        ' ici ton code
    End Sub
     
    ' autre exemple avec MouseClick pour montrer la différence au niveau de la signature
    Private Sub MyRadioButtons_MouseClick(ByVal sender As Object, ByVal e As MouseEventArgs)
    Ensuite il faut abonner cette méthode aux évènements de tes RadioButton lors de leur création:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    For i As Integer = 0 To NombreLigne
        Dim rb As New RadioButton() With { _
            .Name = "RadioButton" & i.ToString(), _
            .Location = New Point(120, 150 + 50 * i) _
        } ' j'utilise une autre syntaxe mais le résultat est identique
     
        AddHandler rb.Click, AddressOf MyRadioButtons_Click
        Controls.Add(rb)
    Next
    Enfin, pour obtenir le RadioButton qui a déclenché l'évènement, il faut utiliser le paramètre sender, qui contient justement le contrôle/l'objet qui a déclenché l'évènement.
    Attention, sender est de type Object, il faut donc penser à le caster pour accéder à ses propriétés (en partant du principe d'utiliser l'option Strict)
    Penser également à vérifier si sender ne vaut pas Nothing et le type réel de sender avant de caster (par exemple si on abonne les évènements de plusieurs types de contrôle à la même méthode):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub MyRadioButtons_Click(ByVal sender As Object, ByVal e As EventArgs)
        If sender Is Nothing Then Throw New ArgumentNullException("sender")
        If TypeOf sender Is RadioButton Then
             Dim rb As RadioButton = DirectCast(sender, RadioButton)
             ' le reste du code utilisant rb...
        End If
    End Sub
    Cordialement !

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 44
    Points : 26
    Points
    26
    Par défaut
    Merci infiniment, Sehnsucht

    Pour ces explications extrèmement claires et simples.

    Sur le net, c'est toujours tellement plus compliqué.

    Mais en plus, c'est personnalisé.

    Non seulement, j'ai tout compris et en plus çà a marché du 1er coup. Contrairement au net où il y a toujours des erreurs.

    Cordialement

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

Discussions similaires

  1. Réponses: 15
    Dernier message: 22/02/2009, 14h36
  2. comment savoir nombre clicks sur bouton
    Par ouadie99 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 29/07/2008, 11h21
  3. Réponses: 6
    Dernier message: 18/12/2006, 15h49
  4. Réponses: 19
    Dernier message: 15/05/2006, 16h50
  5. Réponses: 4
    Dernier message: 25/07/2005, 14h24

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