Picturebox index en vb .net [Résolu]

pcpunch 1244 Messages postés mardi 7 mai 2002Date d'inscription 10 février 2016 Dernière intervention - 12 sept. 2015 à 12:50 - Dernière réponse : pcpunch 1244 Messages postés mardi 7 mai 2002Date d'inscription 10 février 2016 Dernière intervention
- 13 sept. 2015 à 14:18
Bonjour,

Je cherche comment générer des picturebox en vb2010, comme on le fesait en vb6 avec un index.
Je dois generer des picturebox et pouvoir recupérer l index au clic de cette PB
j'ai bien trouver ce code :

Dim Pictureboxes As List(Of PictureBox) = New List(Of PictureBox)
For I As Integer = 0 To 9
Dim P As PictureBox = New PictureBox
P.Size = Boite.Size
P.SizeMode = PictureBoxSizeMode.StretchImage
P.Location = New Point(I * 100 + 20, Boite.Top)
P.BorderStyle = BorderStyle.FixedSingle

Pictureboxes.Add(P)
P.Image = Boite.Image
Me.Controls.Add(P)
Next I

Mais je ne sais pas comment récupérer le clic sur une des picturebox crée dynamiquement.

De plus je cherche a ecrire un chiffre dans la picture box générer ?
Afficher la suite 

5 réponses

Répondre au sujet
cs_Le Pivert 5065 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 13 avril 2018 Dernière intervention - 12 sept. 2015 à 14:47
+1
Utile
Bonjour,

Voici un exemple à adapter:

mettre dans le Form un panel de 284 x260 avec ce code:

Public Class Form1
    Dim image As PictureBox
    Dim x, y, diff, dify As Int32
    Dim vignette As Integer

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        Dim i As Int32
        Panel1.Controls.Clear()
        y = 0
        x = 0
        For i = 1 To 9
                    
         image = New PictureBox

            image.Width = 100
            image.Height = 100
            image.BorderStyle = BorderStyle.Fixed3D
            image.Visible = True
            image.Name = "mapicture " & i
            vignette = 90
            image.SetBounds(x, y, vignette, vignette)
            x += vignette
            'vérifier s'il ya suffisamment d'espace dans l'axe x pour ajouter une image
            If x >= Panel1.Width Or (x + vignette) > Panel1.Width Then
                diff = Panel1.Width - x
                'S'il n'y a pas assez d'espace, commencer une nouvelle ligne ci-dessous
                y += vignette
                x = 0
            End If
            If ((y + vignette) > Panel1.Height) Then
                dify = Panel1.Height - y
            End If

            AddHandler image.MouseDown, AddressOf PictureBox_MouseDown
            AddHandler image.MouseMove, AddressOf PictureBox_MouseMove
            AddHandler image.DoubleClick, AddressOf PictureBox_DoubleClick
            'ajouter une image
            Panel1.Controls.Add(image)
        Next i
    End Sub
    Private Sub PictureBox_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
        If e.Button = Windows.Forms.MouseButtons.Left Then
            x = e.X
            y = e.Y
        End If
    End Sub

    Private Sub PictureBox_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
        If e.Button = Windows.Forms.MouseButtons.Left Then
            sender.Left += (e.X - x)
            sender.Top += (e.Y - y)
        End If
    End Sub
    Private Sub PictureBox_DoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
        ' On récupère le contrôle cliqué ...
        Dim pictTmp As PictureBox = DirectCast(sender, PictureBox)
        MsgBox(pictTmp.Name)
    End Sub
End Class

Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_Le Pivert
cs_Le Pivert 5065 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 13 avril 2018 Dernière intervention - 12 sept. 2015 à 16:00
+1
Utile
1
La pictureBox n'a pas destination a recevoir du texte. Il faut utiliser une TextBox.
Tu peux faire la même chose avec des TextBox dynamiques, comme ceci:

Public Class Form1
    Dim texte As TextBox
    Dim x, y, diff, dify As Int32
    Dim vignette As Integer
    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        Dim i As Int32
        Panel1.Controls.Clear()
        y = 0
        x = 0
        For i = 1 To 9
            'création TextBox
            texte = New TextBox()
            texte.Multiline = True
            texte.Width = 100
            texte.Height = 100
            texte.BorderStyle = BorderStyle.Fixed3D
            texte.Visible = True
            texte.Name = "montexte " & i
            vignette = 90
            texte.SetBounds(x, y, vignette, vignette)
            x += vignette
            'vérifier s'il ya suffisamment d'espace dans l'axe x pour ajouter une image
            If x >= Panel1.Width Or (x + vignette) > Panel1.Width Then
                diff = Panel1.Width - x
                'S'il n'y a pas assez d'espace, commencer une nouvelle ligne ci-dessous
                y += vignette
                x = 0
            End If
            If ((y + vignette) > Panel1.Height) Then
                dify = Panel1.Height - y
            End If
            AddHandler texte.DoubleClick, AddressOf TextBox_DoubleClick
            'ajouter une textbox
            Panel1.Controls.Add(texte)
        Next i
    End Sub
    Private Sub TextBox_DoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
        Dim objFont As System.Drawing.Font
        objFont = New System.Drawing.Font("Arial", 48, FontStyle.Bold Or FontStyle.Italic)
        ' On récupère le contrôle cliqué ...
        Dim textTmp As TextBox = DirectCast(sender, TextBox)
        textTmp.Name = Replace(textTmp.Name, "montexte", "")
        textTmp.Text = textTmp.Name
        textTmp.TextAlign = HorizontalAlignment.Center
        textTmp.Font = objFont
    End Sub

Cette réponse vous a-t-elle aidé ?  
cs_Le Pivert 5065 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 13 avril 2018 Dernière intervention - 12 sept. 2015 à 16:01
Toujours dans un panel de 284 x 260
Commenter la réponse de cs_Le Pivert
pcpunch 1244 Messages postés mardi 7 mai 2002Date d'inscription 10 février 2016 Dernière intervention - 12 sept. 2015 à 15:03
0
Utile
merci beaucoup c'est exactement ça !
me reste juste a écrire le chiffre dans la picturebox .
Commenter la réponse de pcpunch
pcpunch 1244 Messages postés mardi 7 mai 2002Date d'inscription 10 février 2016 Dernière intervention - 13 sept. 2015 à 14:18
0
Utile
Merci beaucoup, nikel !!!
Commenter la réponse de pcpunch

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.