VB10: Vos idées pour améliorer mon idée de MoveForm ^^ [Résolu]

Messages postés
553
Date d'inscription
jeudi 12 octobre 2006
Statut
Membre
Dernière intervention
6 juin 2015
- - Dernière réponse : cs_rt15
Messages postés
3982
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
- 20 janv. 2011 à 18:25
SUJET: Bouger une feuille en cliquant dessus.

Salut à tous,

j'ai pondu ce code et j'aimerai savoir si vous auriez plus court, plus optimisé, plus structuré...

Public Class main
    Private Sub main_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown
        Dim a As New MoveForm.MouseDown(sender, e)
    End Sub

    Private Sub main_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove
        Dim a As New MoveForm.MouseMove(sender, e)
    End Sub

    Private Sub main_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseUp
        Dim a As New MoveForm.MouseUp(sender, e)
    End Sub
End Class

Public Class MoveForm
    Protected Shared IsMoveForm As Boolean = False
    Protected Shared MousePos As New System.Drawing.Point(0, 0)

    Partial Class MouseDown
        Sub New(ByVal sender As Object, ByVal e As MouseEventArgs)
            If e.Button = MouseButtons.Left Then
                IsMoveForm = True
                MousePos = e.Location
            End If
        End Sub
    End Class
    Partial Class MouseUp
        Sub New(ByVal sender As Object, ByVal e As MouseEventArgs)
            If e.Button MouseButtons.Left Then MoveForm.IsMoveForm False
        End Sub
    End Class

    Partial Class MouseMove
        Sub New(ByVal sender As Object, ByVal e As MouseEventArgs)
            If IsMoveForm Then
                Dim temp As Point = New Point(Form.ActiveForm.Location + (e.Location - MousePos))
                Form.ActiveForm.Location = temp
                temp = Nothing
            End If
        End Sub
    End Class
End Class
Afficher la suite 

11 réponses

Meilleure réponse
3
Merci
Salut,
Pour un formulaire avec la valeur FormBorderStyle à None comme dans ton cas tu peux faire plus simple :

Public Class Form1
    Dim ptO As Point

    Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown
        If e.Button = Windows.Forms.MouseButtons.Left Then
            'mémorisation de la position du clic gauche
            ptO = New Point(e.Location)
        End If
    End Sub

    Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove
        If e.Button = Windows.Forms.MouseButtons.Left Then
            'déplacement du formulaire en se servant de la position du curseur
            'remarque : pour un formulaire avec titlebar penser à la retrancher
            'en se servant de Me.ClientSize
            Me.Location = Point.Subtract(Cursor.Position, New Size(ptO))
        End If
    End Sub
End Class


Bonne soirée

Dire « Merci » 3

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

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

Commenter la réponse de Utilisateur anonyme
Messages postés
14554
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
16 juillet 2019
88
0
Merci
Hello,
Si c'est du VB, pourquoi ne pas poster dans la rubrique adéquate?

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Rejoignez mon réseau professionnel sur Viadeo
Commenter la réponse de BunoCS
Messages postés
3247
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
26 décembre 2018
46
0
Merci
Salut
SUJET: Bouger une feuille en cliquant dessus.


c.a.d ? la feuille c'est une form tu changes
la position de ta form à chaque cliques
quelle direction ?
Commenter la réponse de cs_ShayW
Messages postés
553
Date d'inscription
jeudi 12 octobre 2006
Statut
Membre
Dernière intervention
6 juin 2015
2
0
Merci
buno:
Ce n'est pas un partage. Ce n'est pas un problème.
Je met "VB10" dans le titre pour interpeller les gens du bar qui programme avec. Le sujet c'est "Vos idées".
Sinon trouve moi un bar avec discutions libre pour VB ;)

ShayW:
salut !
oui, tu sais quand tu fais bouger ta form avec le clique gauche enfoncé.
J'ai fait quelque chose de différent dans le genre; mais peut-être que quelqu'un serait exploiter mon idée mais en fesant "+ court", "+ optimisé", "+ structuré"
?
Commenter la réponse de Duke49
Messages postés
3247
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
26 décembre 2018
46
0
Merci
Je n'ai pas bien compris
on peut toujours bouger la form avec le click
gauche
formborderstyle tous sauf none
quand je clique sur la bordure supérieur la form
se déplace selon la souris
si je comprends (ça arrive parfois )
tu veux déplacer la form mais si tu cliques
dans ta form et pas seulement sur la bordure
Commenter la réponse de cs_ShayW
Messages postés
3247
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
26 décembre 2018
46
0
Merci
correction
tu veux déplacer la form mais si tu cliques
dans ta form et pas seulement sur la bordure


pas mais mais meme

tu veux déplacer la form meme si tu cliques
dans ta form et pas seulement sur la bordure
Commenter la réponse de cs_ShayW
Messages postés
553
Date d'inscription
jeudi 12 octobre 2006
Statut
Membre
Dernière intervention
6 juin 2015
2
0
Merci
L'intérêt est de bouger une form avec la souris sans menu, ni bordure.

Exemple pratique pour utiliser mon code niveau débutant; avec une form transparente:
Commenter la réponse de Duke49
Messages postés
14554
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
16 juillet 2019
88
0
Merci
Ce n'est pas un partage. Ce n'est pas un problème.
Je met "VB10" dans le titre pour interpeller les gens du bar qui programme avec. Le sujet c'est "Vos idées".
Sinon trouve moi un bar avec discutions libre pour VB ;)

Les personnes qui vont du VB sont dans la partie VB justement
Enfin bon... ce que j'en dis...

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Rejoignez mon réseau professionnel sur Viadeo
Commenter la réponse de BunoCS
Messages postés
553
Date d'inscription
jeudi 12 octobre 2006
Statut
Membre
Dernière intervention
6 juin 2015
2
0
Merci
Moi qui pensait que nous étions de la même famille codes-sources
J'va aller dans le vrai bar pichtronner mon code dans un verre...

++
Commenter la réponse de Duke49
Messages postés
14554
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
16 juillet 2019
88
0
Merci
Disons que nous sommes des cousins éloignés qui ne parlent pas le même langage

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Rejoignez mon réseau professionnel sur Viadeo
Commenter la réponse de BunoCS
Messages postés
3982
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
9
0
Merci
Salut,

Il y a un snippet sur le sujet qui fait ça proprement.

Pour une question VB, il est en effet préférable de poster sur vbfrance dans un thème VB. Le bar est déjà une poubelle, inutile d'en rajouter.

[ Déplacé sur vbfrance ]
Commenter la réponse de cs_rt15