VB NET 2003 Drag +Form + borderstyle = none + Impossible???????

Résolu
neo022 Messages postés 17 Date d'inscription vendredi 27 février 2004 Statut Membre Dernière intervention 16 avril 2006 - 27 janv. 2006 à 23:26
 Utilisateur anonyme - 28 janv. 2006 à 23:55
Bonjour tout le monde.
Après des heures de recherche sur le net dans les forums les sources... je fait enfin appel a vous!
Voila mon problème je voudrais que, lorsque je clique ds ma form n'importe ou et que je laisse le bouton gauche enfoncé, ma form bouge en meme temps que ma souris. Cela parait tout bête en effet mais pour avoir un effet parfaitement fluide sans bavure je galère alors voici mon code( j'ai essayer d'adapter un code vb6 en vb net car la converstion automatique merde (il y a des choses que vb net ne comprend pas et que vb 6 comprenait))
'Déclaration
Dim curx
As
Double



Dim cury
As
Double



Dim curxinst
As
Double



Dim curyinst
As
Double



Dim winx
As
Double



Dim winy
As
Double


'Commencement du code (ne pas tenir compte des labels



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


curx = Cursor.Position.X


cury = Cursor.Position.Y


winx =
Me.Left


winy =
Me.Top



Me.DoDragDrop(
Me, DragDropEffects.Move)



End
Sub



Private
Sub Form1_DragOver(
ByVal sender
As
Object,
ByVal e
As System.Windows.Forms.DragEventArgs)
Handles
MyBase.DragOver



Me.SetDesktopLocation(
Me.Left + (curxinst - curx),
Me.Top + (curyinst - cury))



End
Sub



Private
Sub Timer1_Tick(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles Timer1.Tick


Label1.Text = "X:" & Cursor.Position.X & " Y:" & Cursor.Position.Y


curxinst = Cursor.Position.X


curyinst = Cursor.Position.Y


Label2.Text = "X:" &
Me.Left & " Y:" &
Me.Top



End
Sub



Private
Sub Form1_Load(
ByVal sender
As
Object,
ByVal e
As System.EventArgs)
Handles
MyBase.Load


Timer1.Interval = 1


Timer1.Start()



End
Sub



Private
Sub Button1_Click(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles Button1.Click



Me.SetDesktopLocation(0, 0)



End
Sub


Voila merci de bien vouloir analyser cela pour moi et de me faire part de vos propositions (si possible une source tte bête avec une form et le code pour la faire bouger)
Sinon ne tenez pas compte des labels c pour faire des tests enfin bref laiC tomB ca :P

Vincent ;)
A voir également:

6 réponses

neo022 Messages postés 17 Date d'inscription vendredi 27 février 2004 Statut Membre Dernière intervention 16 avril 2006
28 janv. 2006 à 13:08
J'ai retravailler un peu le code voici ce que ca donne et ca marche :P


'System.Drawing.Point sert a relevé un point dans l'espace de coordonnée (X,Y)



Private PtClick
As System.Drawing.Point



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



'Ici on utilise la variable attribuer au MouseEventArgs (qui sert a tout les evênements qui requiert la souris je pensse



'on vérifie que le bouton enfoncer est bien le bouton de gauche



'puis on attribue des coordonnées a ptclick. Ces coordonnées sont les coordonnées en X et en Y de la souris d'ou e.X et e.Y



If e.Button = Windows.Forms.MouseButtons.Left
Then PtClick =
New System.Drawing.Point(e.X, e.Y)



End
Sub



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



'Ici on dit que si la souris bouge sur la forme et que le bouton gauche est appuyé



If e.Button = Windows.Forms.MouseButtons.Left
Then



'alors la form appelé Mybase va changer de "location" donc aura de nouvelle coordonnée donc New System.Drawing.point



'et la c'est l'équation pour modifier sans bavure la position de la fenetre soir



'position de la form au coingauche en X + (la position de la souris actuel en X - la position de la souris en X au premier clique)



'position de la form au coinhaut en Y + (la position de la souris actuel en Y- la position de la souris en Y au premier clique)



MyBase.Location =
New System.Drawing.Point(
MyBase.Left + (e.X - PtClick.X),
MyBase.Top + (e.Y - PtClick.Y))



End
If



End
Sub


Merci bcps Charles en plus je pense avoir compris tout le code (ps si dans mes commentaire je me suis planté n'hésiter pas a me le dire :P) .
Je pensais qu'il fallais obligatoirement paC par un drag c pour ca que je me suis aussi embrouillé
Vincent ;)
3
Utilisateur anonyme
28 janv. 2006 à 11:10
Bonjour,

J'ai pas trop regarder le code mais je vois que tu fais quelque chose de fort bien compliqué.
Celui là devrai faire ce que tu veut en plus simple.

Private PtClick As System.Drawing.Point
Private Sub Form1_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 Form1_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.
0
neo022 Messages postés 17 Date d'inscription vendredi 27 février 2004 Statut Membre Dernière intervention 16 avril 2006
28 janv. 2006 à 12:39
Oki merci pour le code! Cela dit le e.lovation il ne le reconnais pas cela doit venir du fait que tu dois avoir la version 2005 et que moi j'ai que la version 2003 voici les option qu'il me propose :


e.(b utton or cliks or delta or empty or gettype or X or Y)
aussi stp pourais tu expliquer les ligne de ton code avec les byval je comprend pas grand chose je suis débutant de plus j'apprend un peu tout seul donc c pas facile :P merci d'avance!

Vincent ;)
0
Utilisateur anonyme
28 janv. 2006 à 13:25
Attention MyBase n'est pas le nom de la Form mais l'obejet qu'hérité la classe (donc, ici c'est bien la Form, mais ca aurait très bien pu être autre chose)

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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
neo022 Messages postés 17 Date d'inscription vendredi 27 février 2004 Statut Membre Dernière intervention 16 avril 2006
28 janv. 2006 à 23:41
On aurais pu mettre me a la place de mybase comme ca on est sur! :P

Vincent ;)
0
Utilisateur anonyme
28 janv. 2006 à 23:55
Non plus

Je parle bien de ce commentaire
'alors la form appelé Mybase va changer de "location" ...

Mybase renvoie l'obejet qu'hérite la classe
MyClass renvoie tout ce que la classe contient sauf l'obejet qui l'hérite
Me renvoie les deux (MyBase et MyClass)

Donc dans le code, tout est bon.
Mais le commentaire aurait du être
'alors la form appelé Form1 va changer d'emplacement ...

Donc pour résumer, il est préférable d'utiliser MyBase et MyClass que Me (histoire qu'on s'y retrouve mieux) mais ce n'est pas obligatoire.

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