Tout d'abord, je tiens à préciser que je suis inspiré de la source de Warny (RENDRE UN CONTROLE DÉPLAÇABLE À LA SOURIS (.NET) -
http://www.vbfrance.com/code.aspx?ID=17548)
Je trouvais la source de Warny pas assez explicite, et y avait trop de code pour un si petit truc. Voilà un code beaucoup plus simple, et sans bug.
Donc, comme c'est dit dans le titre, ce code vous permet de rendre une form magnétique.
En approchant votre form des bordures de l'écran, celle-ci se collera vers le bord en question (à la winamp).
Source / Exemple :
Dim x As Integer = 16 'Force du magnétisme
Dim StartControlPos, StartMousePos As Point
Private Sub FormMagnetique_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown
If e.Button <> e.Button.Left Then Exit Sub 'On quitte l'évènement si le bouton de la souris gauche n'est pas enfoncé
StartMousePos = Me.PointToScreen(New Point(e.X, e.Y))
StartControlPos = New Point(Me.Left, Me.Top)
End Sub
Private Sub FormMagnetique_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove
If e.Button <> e.Button.Left Then Exit Sub 'On quitte l'évènement si le bouton de la souris gauche n'est pas enfoncé
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 < x Then
NewLeft = 0
End If
If NewTop < x Then
NewTop = 0
End If
If NewLeft + x > Screen.PrimaryScreen.WorkingArea.Width - Me.Width Then
NewLeft = Screen.PrimaryScreen.WorkingArea.Width - Me.Width
End If
If NewTop + x > Screen.PrimaryScreen.WorkingArea.Height - Me.Height Then
NewTop = Screen.PrimaryScreen.WorkingArea.Height - Me.Height
End If
Me.Left = NewLeft
Me.Top = NewTop
End Sub
Private Sub FormMagnetique_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseUp
If e.Button <> e.Button.Left Then Exit Sub 'On quitte l'évènement si le bouton de la souris gauche n'est pas enfoncé
StartMousePos = Nothing
End Sub
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.