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

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

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.