Problème pour insérer dynamiquement un objet de type drawline dans un groupbox c [Résolu]

Messages postés
28
Date d'inscription
mercredi 23 mars 2011
Dernière intervention
16 août 2011
- - Dernière réponse : jjg65
Messages postés
28
Date d'inscription
mercredi 23 mars 2011
Dernière intervention
16 août 2011
- 16 mars 2011 à 20:45
Chers membres,
Je sollicite une aide de votre part.
J'ai créé dans une form un groupbox de façon dynamique.
Dans cet groupbox je voudrais y insérer d'autres objets dynamiquement comme des combobox, des images, des rectangles et des lignes.
En ce qui concerne les combobox et les images je n'ai pas eu de problème.
En ce qui concerne les lignes j'ai trouvé le code mais je ne sais pas comment l'intégrer au groupbox.
Quelqu'un aurait-il une idée ?
D'avance merci.

Voici l'exemple de code :
code couleur orange --> création dynamique groupbox
code couleur mauve --> création dynamique combobox dans la groupbox
code couleur bleu --> création dynamique ligne dans la form

Private Sub initialize_combobox_equipes_visitee()
Dim deplacement_image_vertical, deplacement_image_horizontal As Integer
Dim i As Integer

Dim maGroupBox As GroupBox
Dim monLabelFeuilleMatcheEquipeVisitee As Label
Dim canvas As New Microsoft.VisualBasic.PowerPacks.ShapeContainer
Dim maLigne As New Microsoft.VisualBasic.PowerPacks.LineShape



For i = 0 To 17
tableau_joueurs_combobox_equipe_visitee_top(i) = 0
tableau_jouers_combobox_equipe_visitee_left(i) = 0
tableau_noms_indices_joueurs_combobox_equipe_visiteuse(i) = ""
Next

'CREATION & POSITIONNEMENT GROUPBOX EQUIPE VISITEE

maGroupBox = New GroupBox
maGroupBox.Visible = True
maGroupBox.Name = "GroupBoxJoueursEquipeVisitee"
maGroupBox.Location = New System.Drawing.Point(160, 40)
maGroupBox.Size = New System.Drawing.Size(505, 730)
'maGroupBox.TabStop = False
maGroupBox.Visible = True
Controls.Add(maGroupBox)
'CREATION & POSITIONNEMENT LABEL FEUILLE MATCH EQUIPE VISITEE
monLabelFeuilleMatcheEquipeVisitee = New Label
monLabelFeuilleMatcheEquipeVisitee.Text = "Feuille Match"
monLabelFeuilleMatcheEquipeVisitee.Font = New Font("MV Boli", 12)
monLabelFeuilleMatcheEquipeVisitee.ForeColor = Color.DarkGreen
monLabelFeuilleMatcheEquipeVisitee.BackColor = Color.GreenYellow
monLabelFeuilleMatcheEquipeVisitee.ImageAlign = ContentAlignment.MiddleCenter
monLabelFeuilleMatcheEquipeVisitee.BorderStyle = BorderStyle.FixedSingle
monLabelFeuilleMatcheEquipeVisitee.Location = New System.Drawing.Point(20, 58)
monLabelFeuilleMatcheEquipeVisitee.Size = New System.Drawing.Size(110, 24)
monLabelFeuilleMatcheEquipeVisitee.Visible = True
maGroupBox.Controls.Add(monLabelFeuilleMatcheEquipeVisitee)

'CREATION & POSITIONNEMENT LABEL REMPLACANTS EQUIPE VISITEE
monLabelFeuilleMatcheEquipeVisitee = New Label
monLabelFeuilleMatcheEquipeVisitee.Text = "Remplaçants"
monLabelFeuilleMatcheEquipeVisitee.Font = New Font("MV Boli", 12)
monLabelFeuilleMatcheEquipeVisitee.ForeColor = Color.DarkGreen
monLabelFeuilleMatcheEquipeVisitee.BackColor = Color.GreenYellow
monLabelFeuilleMatcheEquipeVisitee.ImageAlign = ContentAlignment.MiddleCenter
monLabelFeuilleMatcheEquipeVisitee.BorderStyle = BorderStyle.FixedSingle
monLabelFeuilleMatcheEquipeVisitee.Location = New System.Drawing.Point(20, 385)
monLabelFeuilleMatcheEquipeVisitee.Size = New System.Drawing.Size(110, 24)
monLabelFeuilleMatcheEquipeVisitee.Visible = True
maGroupBox.Controls.Add(monLabelFeuilleMatcheEquipeVisitee)

Dim bit As Bitmap = New Bitmap(Me.Width, Me.Height)
Dim g As Graphics = Graphics.FromImage(bit)
Dim myPen As Pen = New Pen(Color.Blue, 3)
Me.CreateGraphics.DrawLine(myPen, 0, 0, Me.Width, Me.Height)


'CREATION & POSITIONNEMENT COMBOBOX EQUIPE VISITEE
deplacement_image_horizontal = 20
deplacement_image_vertical = 65

Dim monComboBox As ComboBox
For i = 0 To 17 Step 1

If (i >= 0) And (i <= 10) Then
deplacement_image_horizontal = deplacement_image_horizontal
deplacement_image_vertical = deplacement_image_vertical + 25

ElseIf (i = 11) Then
deplacement_image_horizontal = deplacement_image_horizontal
deplacement_image_vertical = deplacement_image_vertical + 75
Else
deplacement_image_horizontal = deplacement_image_horizontal
deplacement_image_vertical = deplacement_image_vertical + 25
End If


monComboBox = New ComboBox

' Positionne la picturebox et fixe la dimension.
monComboBox.Location = New System.Drawing.Point(deplacement_image_horizontal, deplacement_image_vertical)
monComboBox.Size = New System.Drawing.Size(110, 21)
monComboBox.Visible = True
monComboBox.Name = "ComboxBoxEquipeVisitee" & i
maGroupBox.Controls.Add(monComboBox)
AddHandler monComboBox.Click, AddressOf monComboBox_Click
Next i
AddHandler Click, AddressOf monBouton_Click
End Sub
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
3
Merci
Salut,
De la même façon que tu ajoutes des gestionnaires d'événements pour les clics de souris à ta combo, tu peux aussi en ajouter au groupbox pour dessiner dessus lors de son propre événement paint :
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim gb As New GroupBox
        'ajout d'un handler Paint au groupbox
        AddHandler gb.Paint, AddressOf gb_Paint
        Me.Controls.Add(gb)
    End Sub

    Private Sub gb_Paint(ByVal sender As Object, ByVal e As PaintEventArgs)
        'dessin sur le groupbox
        e.Graphics.DrawLine(New Pen(Color.Red, 4), New Point(6, 40), New Point(35, 12))
    End Sub


Tu peux aussi récupérer son objet graphique afin d'y dessiner quand bon te semble par la suite :
    Dim g As Graphics
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim gb As New GroupBox
        g = gb.CreateGraphics
        Me.Controls.Add(gb)
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        g.DrawLine(New Pen(Color.Red, 4), New Point(6, 40), New Point(35, 12))
    End Sub

A bientôt.

Merci Utilisateur anonyme 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de Utilisateur anonyme
Messages postés
28
Date d'inscription
mercredi 23 mars 2011
Dernière intervention
16 août 2011
0
Merci
Cher membre,
Merci d'avoir pris un peu de ton temps libre pour me répondre.
C'était clair, net et précis.
J'ai été en mesure de mettre ton code en pratique.
Commenter la réponse de jjg65

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.