Drag and Drop d'une fenêtre principale sans bordures / .Net [Résolu]

Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
- - Dernière réponse : cboulas
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
- 14 févr. 2006 à 16:38
Salut à tous,

Bien ma question est très simple : J'ai une fenêtre d'application qui n'a pas de bordure car cette application à comme fond une image.
j'aimerais pouvoir déplacer cette fenètre en utilisant la souris via le procédé Drag And Drop, j'ai commencer à faire la prog du tout mais lorsque je déplace celle-ci elle ne suis pas du tout la souris ou alors elle clignote le temps du déplacement, mais le pire est que lors du relachement du bouton de la souris, la fenètre n'est pas du tout à l'emplacement voulu.

Quelqu'un peux t'il m'aider ?

Merci d'avance :

Mon code :

Private
Sub MainSrc_MouseUp(
ByVal sender
As
Object,
ByVal e
As System.Windows.Forms.MouseEventArgs)
Handles
MyBase.MouseUp





Me.Location =
New System.Drawing.Point(e.X, e.Y)




End
Sub


Chris...
Web : Firstruner
Afficher la suite 

6 réponses

Meilleure réponse
Messages postés
3181
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
25
3
Merci
Bonjour,

Et encore et toujours la même question,
Mais bon, j'y répond quand même.
On ne peut pas utiliser le DragDrop pour déplacer une fenêtre !

Utilise plutôt:

Private PtClick As System.Drawing.Point
Private Sub MaisScr_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown If e.Button Windows.Forms.MouseButtons.Left Then PtClick e.Location
End Sub
Private Sub MaisScr_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove
If e.Button = Windows.Forms.MouseButtons.Left Then
MyBase.Location = New System.Drawing.Point(MyBase.Left + (e.X - PtClick.X), MyBase.Top + (e.Y - PtClick.Y))
End If
End Sub

Kenji

<hr size="2" width="100%">
Merci de cliquer sur "Réponse acceptée" si une réponse vous convient.

Dire « Merci » 3

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

Codes Sources 211 internautes nous ont dit merci ce mois-ci

Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
11
3
Merci
Merci bien pour ces informations, et désoler de ne pas connaître le language adéquate, en revanche il faut fair eune légère modif à ton code
car en DotNet 1, 'e' ne retourne pas d'object 'location'


Chris...
Web : Firstruner

Dire « Merci » 3

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

Codes Sources 211 internautes nous ont dit merci ce mois-ci

Messages postés
3181
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
25
0
Merci
Pour la prochaine fois, indique le langage utilisé (aussi dans la question) ainsi que la version.
Comme ca j'aurais pu adapter. Bon, là ce n'est pas trop grave mais des fois y'a tout qui change.

Kenji
Messages postés
6764
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
0
Merci
salut,



tu localise le formulaire (le coin supérieur gauche) à la position de
la souris au moment du MouseUp. il faut que tu tiennes compte de la
position de la souris au moment du MouseDown (pour corriger la position
du formulaire en fonction de la position du curseur sur le formulaire).

il faut localiser le formulaire à chaque déplacement de souris (évènement MouseMove).



les handlers sont incomplets (je l'ai écrit avec Scite !) et il faut
surement convertir les coordonnées (client/écran), mais le principe est
celui-là :



Dim doDrag As Boolean = False

Dim mousePos As Point = Point.Empty



Private Sub MouseDown(X As Integer, Y As Integer)


doDrag = True

mousePos = New Point(X, Y)


End Sub


Private Sub MouseMove(X As Integer, Y As Integer)


If doDrag = True Then


frm.Left = frm.Left - (mousePos.X - X)
frm.Top = frm.Top - (mousePos.Y - Y)


End If


End Sub


Private Sub MouseUp()


doDrag = False


End Sub





[ Dalida ]
Messages postés
6764
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
0
Merci
oupps, ça m'apprendra à mettre trop de temps pour répondre et pas actualiser la page avant de poster...



[ Dalida ]
Messages postés
2641
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
8 janvier 2014
11
0
Merci
Merci qd même Dalida,

Et pour Charles, bhààà regarde le titre de mon post ...


Chris...
Web : Firstruner