Soyez le premier à donner votre avis sur cette source.
Snippet vu 8 941 fois - Téléchargée 30 fois
Public MagneticDistance As Long = 10 Private StartMousePos As Point Private StartControlPos As Point Private Sub Tools_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown StartMousePos = Me.PointToScreen(New Point(e.X, e.Y)) StartControlPos = New Point(Me.Left, Me.Top) End Sub Private Sub Tools_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseUp StartMousePos = Nothing End Sub Private Sub Tools_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove If e.Button = MouseButtons.Left Then Dim NewMousePos As Point = Me.PointToScreen(New Point(e.X, e.Y)) Dim NewLeft As Long = StartControlPos.X + NewMousePos.X - StartMousePos.X Dim NewTop As Long = StartControlPos.Y + NewMousePos.Y - StartMousePos.Y If NewLeft < MagneticDistance And (Me.Dock = DockStyle.Left Or Me.Dock = DockStyle.None) Then 'magnetisme à gauche NewLeft = 0 Me.Dock = DockStyle.Left ElseIf NewTop < MagneticDistance And (Me.Dock = DockStyle.Top Or Me.Dock = DockStyle.None) Then 'magnetisme en haut NewTop = 0 Me.Dock = DockStyle.Top ElseIf (NewTop + Me.Height) > (Me.ParentForm.Height - MagneticDistance) And (Me.Dock = DockStyle.Bottom Or Me.Dock = DockStyle.None) Then 'magnetisme en bas NewTop = NewTop + Me.Height Me.Dock = DockStyle.Bottom ElseIf (NewLeft + Me.Width) > (Me.ParentForm.Width - MagneticDistance) And (Me.Dock = DockStyle.Right Or Me.Dock = DockStyle.None) Then 'magnetisme à droite NewTop = NewTop + Me.Width Me.Dock = DockStyle.Right Else 'pas magnétisé Me.Dock = DockStyle.None 'il arrive que le control ne soit pas sous la souris, il faut alors le recentrer Dim ControlPos As Point = Me.ParentForm.PointToScreen(New Point(Me.Left, Me.Top)) Dim MousePos As Point = Me.ParentForm.PointToClient(NewMousePos) If NewMousePos.X < ControlPos.X Or NewMousePos.X > (ControlPos.X + Me.Width) Then StartControlPos.X = StartMousePos.X - (Me.Width \ 2) 'NewLeft = StartControlPos.X End If If NewMousePos.Y < ControlPos.Y Or NewMousePos.Y > (ControlPos.Y + Me.Height) Then StartControlPos.Y = StartMousePos.Y - (Me.Height \ 2) 'NewTop = StartControlPos.Y End If End If Me.Left = NewLeft Me.Top = NewTop End If End Sub
http://www.vbfrance.com/code.aspx?ID=17715
Merci
Tiens nous au courant !
++
J'ai la flemme ^^
9/10
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.