Créer un bouton at runtime [Résolu]

Signaler
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
-
 Utilisateur anonyme -
Bonjour à tous

J'explique
j'ai 2 form form1 et form2
et je veux dans form1 créer un bouton qui doit
etre placer dans form2
donc j'ai fait ainsi
Private ttt As System.Windows.Forms.Button
ttt = New Button
        With ttt
            .Text = "tttt"
            .Visible = False
            .Left = 4
            .Top = 4
        End With
        Form2.Controls.Add(ttt)

le problème comment je vais écrire l'addresse
d'un évenement click par ex
AddHandler .MouseClick, AddressOf ?

ce n'est peut etre pas possible

merci d'avance

1 réponse


Salut ShayW,

Le plus simple est de rajouter une propriété à ta form2 :
    Property Bouton() As Button
        Get
            Return bt
        End Get
        Set(ByVal value As Button)
            bt = New Button
            bt = value
            Me.Controls.Add(bt)
        End Set
    End Property


et de déclarer bt dans l'entête de la classe de Form2 :
Dim WithEvents bt As Button


ainsi tu pourra écrire dans la classe Form2 ses gestionnaires d'événements.
ou bien les choisir dans l'ide comme pour n'importe quel composant (au dessus de la zone d'écriture du code).
    Private Sub bt_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles bt.Click
        MessageBox.Show("coucou")
    End Sub


Il te restera à écrire ton code dans Form1 :
        Dim ttt = New Button
        With ttt
            .Text = "tttt"
            .Visible = True
            .Left = 4
            .Top = 4
        End With

        Dim MaForm2 As New Form2
        MaForm2.Bouton = ttt
        MaForm2.Show()

Il y a d'autres manières comme créer une classe clsBouton qui hérite de la classe Button standard etc...
A toi de voir si ceci te convient.
A bientôt