Déplacement d'une form par un glisser d'un composant [Résolu]

- - Dernière réponse :  Avé moi - 11 sept. 2015 à 01:31
Bonjour,

Tout est dans la question : Je voudrais, qu'en bougeant un objet (par un clic maintenu), la form bouge avec. Est-ce possible ?


La raison de cela, c'est que pour avoir une form plus jolie, j'ai mis la valeur "none" a "formborderstyle" et j'ai mis plein d'image (Bouton fermer, minimiser)

J'aimerai le faire avec un panel, mais si ce n'est pas possible, par une image.

Merci à tout ceux qui vont m'aider

(Si Banana32 passe dans le coin : C'est pour le même programme que ma question précédente)

Une petite image pour illustrer (l'image est longue a charger):


Bien sur le panel ne s’arrête pas au petit trait blanc (qui ne sont que des ligne)
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
3
Merci
Salut,

Tu peux déplacer ton formulaire en te servant des événements MouseDown et MouseMove de n'importe quel contrôle. On utilise Point.Add et Point.Subtract.

Option Strict On
Public Class Form1
    Dim ptO As Point
    Private Sub Panel1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseDown
        If e.Button = Windows.Forms.MouseButtons.Left Then
            'mémorisation de la position du clic gauche
            ptO = Point.Add( _
                  New Point(e.X + SystemInformation.FrameBorderSize.Width, _
                            e.Y + SystemInformation.FrameBorderSize.Height + SystemInformation.CaptionHeight), _
                  New Size(DirectCast(sender, Panel).Location))
        End If
    End Sub

    Private Sub Panel1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Panel1.MouseMove
        If e.Button = Windows.Forms.MouseButtons.Left Then
            'déplacement du formulaire en se servant de la position du curseur
            Me.Location = Point.Subtract(Cursor.Position, New Size(ptO))
        End If
    End Sub
End Class

Merci Utilisateur anonyme 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de Utilisateur anonyme
1
Merci
D'ailleurs tu peux tout virer, la ligne devient :
ptO = Point.Add(New Point(e.X, e.Y), New Size(DirectCast(sender, Panel).Location))
 
Commenter la réponse de Utilisateur anonyme
Messages postés
728
Date d'inscription
samedi 4 avril 2009
Dernière intervention
30 mars 2014
0
Merci
Bonjour,

C'est la form qu'on déplace généralement, voici le code :

Option Explicit On
Public Class Form1
  Private dernierpoint As Point

  Sub Form1_MouseDown(sender As Object, e As MouseEventArgs) Handles Me.MouseDown
    If e.Button Windows.Forms.MouseButtons.Left Then dernierpoint New Point(e.X, e.Y)
  End Sub

  Sub Form1_MouseMove(sender As Object, e As MouseEventArgs) Handles Me.MouseMove
    If e.Button <> Windows.Forms.MouseButtons.Left Then Exit Sub
    Left = Left + (e.X - dernierpoint.X)
    Top = Top + (e.Y - dernierpoint.Y)
  End Sub

End Class


Cordialement, Joe.
Et comme par magie ça marche. Merci ehjoe
Commenter la réponse de ehjoe
0
Merci
Merci. Effectivement ce code code marche.

Je vais être plus précis : En déplaçant le panel, la form bouge en même temps. En sachant que le bord haut-gauche du panel a une position 0; 0 par rapport a la form.


Ce n'est pas possible. En fait, cela serait une sorte d'imitation de la barre bleu d'une form.
Commenter la réponse de tictac08
0
Merci
Ca marche mais il y a un petit problème, une fois qu'on maintient le clic et qu'on bouge la souris, la form remonte d'un 20-30ène de pixel, est-ce normal ?
Commenter la réponse de tictac08
0
Merci
Si formborderstyle est sur None, sors + SystemInformation.CaptionHeight
Commenter la réponse de Utilisateur anonyme
0
Merci
Cela fonctionne à la perfection. Merci à toi Banana32

Toujours aussi efficace et rapide
Commenter la réponse de tictac08

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.