VB10: Vos idées pour améliorer mon idée de MoveForm ^^

Résolu
Duke49 Messages postés 552 Date d'inscription jeudi 12 octobre 2006 Statut Non membre Dernière intervention 24 janvier 2023 - 19 janv. 2011 à 23:07
cs_rt15 Messages postés 3874 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

11 réponses

Utilisateur anonyme
20 janv. 2011 à 17:21
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
3
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
20 janv. 2011 à 11:07
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
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
20 janv. 2011 à 11:20
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 ?
0
Duke49 Messages postés 552 Date d'inscription jeudi 12 octobre 2006 Statut Non membre Dernière intervention 24 janvier 2023 4
20 janv. 2011 à 12:21
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é"
?
0

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

Posez votre question
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
20 janv. 2011 à 12:48
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
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
20 janv. 2011 à 12:51
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
0
Duke49 Messages postés 552 Date d'inscription jeudi 12 octobre 2006 Statut Non membre Dernière intervention 24 janvier 2023 4
20 janv. 2011 à 14:08
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:
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
20 janv. 2011 à 16:56
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
0
Duke49 Messages postés 552 Date d'inscription jeudi 12 octobre 2006 Statut Non membre Dernière intervention 24 janvier 2023 4
20 janv. 2011 à 17:04
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...

++
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
20 janv. 2011 à 17:06
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
0
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
20 janv. 2011 à 18:25
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 ]
0
Rejoignez-nous