Deplacement de controls dynamiques associés [Résolu]

Messages postés
20
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
16 février 2014
- - Dernière réponse : nihonsx5
Messages postés
20
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
16 février 2014
- 25 juin 2006 à 20:16
Bonjour (ou plutôt bonsoir à cette heure-ci)

Je commence à développer une appli pour mon boulot. Je ne suis pas encore au top au point de
vue programmation, mais j'essaye de progresser.
Je bloque sur un point :
après appuie sur un bouton, je crée dynamiquement une picturebox et un label qui va se positionner en dessous de la picturebox. Ensuite on déplace la picturebox avec la souris, le label associé se déplace aussi et reste en dessous de la picturebox.
On peut créer d'autres picturebox avec label associé, mais le soucis, c'est que le label déplacé est toujours le même. Je n'arrive pas à trouver un moyen pour déplacer le label associé à une picturebox.

Voici l'exemple de mon code :

Public Class Form1

    Dim pict As PictureBox
    Dim lab As Label
    Dim nbrPict As Integer
    Dim nbrlab As Integer

    Private Const HTCAPTION As Integer = 2
    Private Const WM_NCLBUTTONDOWN As Integer = 161

    Private Declare Auto Function ReleaseCapture Lib "user32" () As Integer
    Private Declare Auto Function SendMessage Lib "user32" (ByVal hWnd As IntPtr, ByVal msg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As IntPtr

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'picturebox
        pict = New PictureBox
        pict.BackColor = Color.Transparent
        pict.Name = "pict" & nbrPict.ToString
        pict.Height = 75
        pict.Width = 53
        pict.Image = System.Drawing.Image.FromFile("C:\Documents and Settings\Reno\Mes documents\mami.png")
        pict.Location = New Point(50, 50)
        Me.Controls.Add(pict)
        AddHandler pict.MouseDown, AddressOf PICTDOWN

        'label
        lab = New Label
        lab.BackColor = Color.Transparent
        lab.Name = "lab" & nbrLab.ToString
        lab.Text = "abieiyue"
        lab.TextAlign = ContentAlignment.TopCenter
        lab.Width = 8 * lab.Text.Length
        lab.Location = New Point(pict.Location.X + (CInt(pict.Width / 2)) - (CInt(lab.Width / 2)), pict.Location.Y + 75)
       

        Me.Controls.Add(lab)

        nbrlab += 1
        nbrPict += 1

    End Sub

    Private Sub PICTDOWN(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
       
        If (e.Button = Windows.Forms.MouseButtons.Left) Then
            ReleaseCapture()
            CType(sender, PictureBox).Visible = False
            SendMessage(CType(sender, PictureBox).Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0)
            CType(sender, PictureBox).Visible = True
        End If

        lab.Location = New Point(CType(sender, PictureBox).Location.X + (CInt(CType(sender, PictureBox).Width / 2)) - (CInt(lab.Width / 2)), CType(sender, PictureBox).Location.Y + 75)
        lab.Visible = True

    End Sub

End Class

Merci de lire ce message. J'y retourne...
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
2215
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
16 juillet 2009
3
Merci
Mais comme tu peux créer plusieurs picturebox et plusieurs label, pourquoi ne pas faire un tableau d'entre eux, c'est à dire avec un index, et quand tu déplace la picturebox(x), ça déplace le label(x) ?

Ciaò
[mailto:madmatt_12@msn.com MadMatt]
www.madmatt.fr.st

Dire « Merci » 3

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

Codes Sources 197 internautes nous ont dit merci ce mois-ci

Commenter la réponse de MadM@tt
Messages postés
20
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
16 février 2014
0
Merci
je vais essayer ça quand j'aurai le temps. merci
Commenter la réponse de nihonsx5
Messages postés
20
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
16 février 2014
0
Merci
J'ai donc créé deux collections de control, une pour les label et une autre pour les picturebox. Et avec les index, je peux facilement accéder à mes controls. Ca fonctionne à merveilles. Et de plus, j'ai appris des trucs. MERCI.
Commenter la réponse de nihonsx5