Fair déplacer un label

spriatez - 15 déc. 2012 à 19:43
 spriatez - 22 déc. 2012 à 22:03
Bonjour/bonjour à toutes et à tous.


Je viens demander de votre aide pouru n petit projet que je réalise !

Enfaite, j'ai créer un "MenuStrip" où j'ai mis un onglet : Création, avec l'arborescence suivante :

|-Création
|->----------- 1
|->----------- 2
|->----------- 3

Je voudrais, si possible : Lorsque je clique sur "1" un nouveau label se créer avec comme texte : "1"

Et ensuite, que je puisse le déplacer dans ma page et le palcer où je veux ! :( Mais ça fait maintenant 10 jours que j'essaye de trouver, ce qui m'est impossible >.<


Je vous remerci d'avance ! :)

9 réponses

cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
15 déc. 2012 à 23:08
Salut

Private lastmouselocation As Point
   'choice1 c'est chez toi 1 
  Private Sub choice1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles choice1.Click
        Dim mylabel As New Label
        With mylabel
            .Font = New Font("arial", 12, FontStyle.Bold)
            .Text = "BLABLA"
            .BorderStyle = BorderStyle.Fixed3D
            .Location = New Point(10, 60)
            .Visible = True
        End With
        Me.Controls.Add(mylabel)

        AddHandler mylabel.MouseMove, AddressOf labelmousemove
        AddHandler mylabel.MouseDown, AddressOf labelmovedown
    End Sub  

 Private Sub labelmovedown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
        lastmouselocation = e.Location
    End Sub

   

    Private Sub labelmousemove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
        Dim ptlabel As New Point
        ptlabel = e.Location
        If e.Button = Windows.Forms.MouseButtons.Left Then

            DirectCast(sender, Label).Left += e.Location.X - lastmouselocation.X
            DirectCast(sender, Label).Top += e.Location.Y - lastmouselocation.Y
        End If
    End Sub
0
Salut à toi !


Je vais tester votre script !

MErci beaucoup !
0
J'ai testé et tout :D

Mais j'arrive pas à comprendre le "choice1 c'est chez toi 1 "

Merci :)
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
18 déc. 2012 à 22:25
Mais j'arrive pas à comprendre le "choice1 c'est chez toi 1 "


erreur de ma part
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
18 déc. 2012 à 22:38
Bonjour,

Voici un exemple commenté qui utilise une autre méthode que celle de ShayW que je salue au passage :
Option Strict On
Public Class Form1
    'déclaration du label à déplacer
    Dim MonLabel As Label
    'déclaration d'un point servant de base au déplacement
    Dim MonPoint As Point
    'observe qu'on peut abonner tous les toolstrip au même événement avec Handles
    Private Sub ToolStripMenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
                                         Handles ToolStripMenuItem2.Click, _
                                                 ToolStripMenuItem3.Click
        'instance d'un label en récupérant son texte depuis ton toolstrip
        MonLabel New Label With {.Text DirectCast(sender, ToolStripMenuItem).Text, _
                                   .BackColor = Color.Pink, _
                                   .Location = New Point(15, 30), _
                                   .BorderStyle = BorderStyle.FixedSingle
                                  }
        'ajout des abonnements aux événements Mouse...
        AddHandler MonLabel.MouseDown, AddressOf MonLabelMouseDown
        AddHandler MonLabel.MouseMove, AddressOf MonLabelMouseMove
        'ajout au formulaire
        Me.Controls.Add(MonLabel)
    End Sub

    Private Sub MonLabelMouseDown(ByVal sender As Object, ByVal e As MouseEventArgs)
        'au clic gauche, on récupère un point de base
        If e.Button = Windows.Forms.MouseButtons.Left Then
            'on ré-attibue ici MonLabel au contrôle à déplacer
            'ceci permet de reprendre n'importe quel label pour le déplacer à nouveau
            MonLabel = DirectCast(sender, Label)
            'récupération du point de base
            MonPoint = e.Location
        End If
    End Sub

    Private Sub MonLabelMouseMove(ByVal sender As Object, ByVal e As MouseEventArgs)
        'au déplacement(bouton gauche enfoncé) on calcule le point du label en se servant de Point.Subtract
        If e.Button = Windows.Forms.MouseButtons.Left Then
            MonLabel.Location = Point.Subtract(Cursor.Position, _
                                              New Size(Me.Left + MonPoint.X, _
                                              Me.Top + MonPoint.Y + SystemInformation.CaptionHeight))
        End If
    End Sub
End Class
0
Salut banana32,

Un grand merci de ton script, je vais essayé aussi ! :D


Parcontre, j'essaye de faire passer le label sur un autre, mais j'y arrive pas :( il se glisse dessous, je peux faire comment s'il vous plaît ? :o
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
21 déc. 2012 à 18:54
Bonjour,
Tapez le texte de l'url ici.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
22 déc. 2012 à 20:29
Bonjour

après la ligne
 Me.Controls.Add(mylabel)
 mylabel.BringToFront()


ou selon le code de Banana32 que je salue
Me.Controls.Add(MonLabel)
MonLabel.BringToFront()
0
Bonsoir ucfoutu,

Merci de l'information ! :D



Bonsoir ShayW,

Merci énormement pour le code ! :D ça marche niquel :) J'aurais bien galérer à essayer de trouver !! :p
0
Rejoignez-nous