cs_pipic
Messages postés50Date d'inscriptionmercredi 11 juin 2003StatutMembreDernière intervention 9 décembre 2003
-
9 déc. 2003 à 15:12
cs_pipic
Messages postés50Date d'inscriptionmercredi 11 juin 2003StatutMembreDerniè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)
cs_radada
Messages postés488Date d'inscriptionlundi 15 septembre 2003StatutMembreDernière intervention21 avril 20091 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 : )
cs_pipic
Messages postés50Date d'inscriptionmercredi 11 juin 2003StatutMembreDerniè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