[.net/.net2] retrouver la propriété moveable de vb

Soyez le premier à donner votre avis sur cette source.

Snippet vu 7 689 fois - Téléchargée 22 fois

Contenu du snippet

Simple représentation en .net de la propriété Moveable présente dans l'objet feuille (Form) en VB6.

Il existe de nombreuses solutions...comme en agissant sur l'événement Move par exemple.
Je propose la solution d'intercepter (http://msdn2.microsoft.com/fr-fr/library/system.windows.forms.form.wndproc(VS.80).aspx) les messages correspondant envoyés à notre feuille et de les ignorer tout simplement. Je laisse place au code ci-dessous pour mieux comprendre.

'Utilisation de la classe pour votre feuille (ex: Form1)
Public Class Form1

Inherits MoveableForm

End Class

Source / Exemple :


Public Class MoveableForm

    Inherits System.Windows.Forms.Form

    Private m_moveable As Boolean

    Private Const HTCAPTION As Integer = &H2
    Private Const WM_SYSCOMMAND As Integer = &H112
    Private Const WM_NCLBUTTONDOWN As Integer = &HA1
    Private Const SC_MOVE As Integer = &HF010

    'Propriété Moveable que l'on retrouve dans VB6
    Public Property Moveable() As Boolean
        Get
            Return m_moveable
        End Get
        Set(ByVal value As Boolean)
            m_moveable = value
        End Set
    End Property

    Public Sub New()

        MyBase.New()

        m_moveable = True

    End Sub

    Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)

        If m_moveable = False Then

            'Recherche les messages correspondants à un déplacement de feuille
            '(clic sur barre de titre et/ou commande de déplacement) alors les ignores.
            If (m.Msg = WM_SYSCOMMAND AndAlso m.WParam.ToInt32() = SC_MOVE) Or _
                (m.Msg = WM_NCLBUTTONDOWN AndAlso m.WParam.ToInt32() = HTCAPTION) Then

                Exit Sub

            End If

        End If

        MyBase.WndProc(m)
    End Sub

    Private Sub InitializeComponent()
        Me.SuspendLayout()
        '
        'Moveable
        '
        Me.ClientSize = New System.Drawing.Size(292, 266)
        Me.Name = "Moveable"
        Me.Text = "toto"
        Me.ResumeLayout(False)

    End Sub
End Class

Conclusion :


1)Ajouter cette classe à votre projet vb.
2)Hériter votre feuille en question de cette classe
3)Regarder dans les propriétés de votre feuille, la propriété Moveable apparait !

A voir également

Ajouter un commentaire

Commentaires

Profil bloqué
Willi, Bonjour/Bonjour,
Je n'ai pas encore compris comment mettre ta source dans mes programme.
J'ouvre un formulaire de classe, j'y met ta source.
Dans les formulaire conserné, j'écris la ligne hérit.
Cela ne semble pas être la procédure correct ??
Si tu a une minute (ou quelqu'un d'autre)....
Merci.
Profil bloqué
Merci Bidou. Je ne comprenait irne a ce mot; et si j'ai bien compris c'est une form sans barre de titre.
Encore merci. Au moins ici on apprend.
Bonne fin de week-end.
Jean-Marie
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
48
Profil bloqué
Merci Willi,
Ce n'est pas dans un but commercial.
Je ne manquerais pas de mettre un lien dans la rubrique a propos de mes programmes.

---------------------------------
Bidou whats snippets

Encore merci
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
48
Utile mais tout de même très très léger pour une source, codyx est justement fait pour les snippets de ce genre, non?
Afficher les 7 commentaires

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.