[Vb.net] Probleme de drag and drop

cs_pipic Messages postés 50 Date d'inscription mercredi 11 juin 2003 Statut Membre Dernière intervention 9 décembre 2003 - 9 déc. 2003 à 15:12
cs_pipic Messages postés 50 Date d'inscription mercredi 11 juin 2003 Statut Membre Dernière intervention 9 décembre 2003 - 9 déc. 2003 à 16:24
Bonjour a tous,

J'ai toujours un petit probleme par rapport a mon drag and drop (changement de strategie par rapport a hier) dont voici l'explication
:

Résumé de ce que je veut faire exactement : J'ai créé une classe noeud qui se caractérise par une image et un label (affiché l'un à coté de l'autre sur les formulaires). Je souhaite pouvoir effectué un drag and drop sur mes noeuds (drag and drop independant pour chaque noeud)
Voici le code de la classe noeud :

Public Class Noeud
    Inherits System.Windows.Forms.Form

    Friend WithEvents LinkLab As System.Windows.Forms.LinkLabel
    Friend WithEvents picturB As System.Windows.Forms.PictureBox
    Friend WithEvents form_parent As System.Windows.Forms.Form
    Private positionX As Integer
    Private positionY As Integer
   
    'construteur
    Sub New(ByVal adresse As String, ByVal posX As Integer, ByVal posY As Integer, ByVal FP As form1)
        positionX = posX
        positionY = posY
        form_parent = FP
        'creation du logo situé devant l'adresse internet (logo pouvant servant pourle drag drop par la suite)
        picturB = New PictureBox()
        picturB.Image = Image.FromFile(Application.StartupPath.ToString & "\rond.bmp")
        picturB.Height = 20
        picturB.Width = 20
        picturB.Location = New Point(positionX, positionY)
        form_parent.Controls.Add(Me.picturB)

        'creation du label contenant le lien internet
        Dim lab As New LinkLabel()
        LinkLab = lab
        lab.Width = 200
        lab.Text = adresse
        lab.Location = New Point(positionX + 20, positionY)
        form_parent.Controls.Add(Me.LinkLab)
    End Sub
End class


3 methodes evenementielles ont été instaurées :
mousedown
mousemove
mouseup
Elles gerent toutes le deplacement du picture avec ses coordonnées... Une librairie a également été ajoutée : MouseMove.vb qui gère le déplacement de ma picture

Le souci c'est que lorsque je lance mon appli, le drag and drop ne fonctionne pas car mon code n'est meme pas executé (ni MouseMove.vb)

Merci bcp pour votre aide

ByeBye pipic.... ;)

2 réponses

cs_radada Messages postés 488 Date d'inscription lundi 15 septembre 2003 Statut Membre Dernière intervention 21 avril 2009 1
9 déc. 2003 à 15:22
Ton code?? Celui de ton noeud ou celui mis dans ton évènement DragAndDrop??? Si c'est le 2ème, regardes si c'est du OLEDragAndDrop et pas du DragAndDrop tout court (je crois que c'est comme dans VB6 pour ça) et que les méthodes de Drag et de Drop de ton objet son à "manual".. Sans VB.Net sous le bras, je ne vois que ça... Bon courage en tout cas : )
0
cs_pipic Messages postés 50 Date d'inscription mercredi 11 juin 2003 Statut Membre Dernière intervention 9 décembre 2003
9 déc. 2003 à 16:24
désolé, j'ai oublié cette partie du code....la voici....

Public Class form1
    Inherits System.Windows.Forms.Form
    Friend WithEvents MonNoeud As carto.Noeud

     Dim mMove As New MouseMove() 'gère les coordonnées de la souris
 Private Sub form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        mMove.Initialize(Timer1)
        Dim monNoeud1 As Noeud
        Dim monNoeud2 As Noeud
        monNoeud1 = New Noeud("hello", coord_x, coord_y, Me)
        monNoeud2 = New Noeud("coucou", coord_x + 50, coord_y + 50, Me) 
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        mMove.ToNewPosition()
        'gère la nouvelle position de l'image en temps réelle
    End Sub

    Private Sub MonNoeud_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MonNoeud.MouseDown
        If e.Button = MouseButtons.Left Then mMove.Begin(sender, e.X, e.Y)
        'comence le mouvement de l'image
        MsgBox("ok")
    End Sub

    Private Sub MonNoeud_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MonNoeud.MouseUp
        If e.Button = MouseButtons.Left Then mMove.EndIt()
        'fin du mouvement
    End Sub

    Private Sub MonNoeud_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MonNoeud.MouseMove
        'lors du mouvement
        If e.Button = MouseButtons.Left Then mMove.InProgress(e.X, e.Y)

        ' see if the top left corner of the object is inside the drop object
        ' gère la visibilité de l'image lorsqu'on arrive au bord du formulaire.
        If CheckDrop(sender.Left, sender.Top) = True Then
            ' make the object disappear
            sender.Visible = False
        End If
    End Sub

    Private Function CheckDrop(ByVal x As Integer, ByVal y As Integer) As Boolean
        ' check if top left corner is inside the drop object
        If x > MonNoeud.Left And x < MonNoeud.Left + MonNoeud.Width Then
            If y > MonNoeud.Top And y < MonNoeud.Top + MonNoeud.Height Then
                CheckDrop = True
            End If
        End If
    End Function
End Class


ByeBye pipic....
0
Rejoignez-nous