1. Herfried K. Wagner’s VB.Any
  2. .NET
  3. Häufig gestellte Fragen

Unterbinden des Verschiebens eines Fensters

Unterbinden des Verschiebens eines Fensters
<URL:https://dotnet.currifex.org/dotnet/faqs/nonmoveableform/de/>
----------------------------------------------------------------------------

Preventing a form from being moved

Based on an implementation written by Tom Spink.

The code below defines a base class that provides a 'Moveable' property.
By inheriting from this class and setting the 'Moveable' property to
'False', the user will be prevented from moving then form:

\\\
Imports System.ComponentModel
Imports System.Windows.Forms

Public Class MoveableForm
    Inherits Form

    Private Const WM_NCLBUTTONDOWN As Int32 = &HA1
    Private Const WM_SYSCOMMAND As Int32 = &H112

    Private Const HTCAPTION As Int32 = &H2

    Private Const SC_MOVE As Int32 = &HF010

    Private m_Moveable As Boolean

    Public Sub New()
        MyBase.New()
        Me.Moveable = True
    End Sub

    < _
        Category("Behavior"), _
        Description("Allows the form to be moved.") _
    > _
    Public Property Moveable() As Boolean
        Get
            Return m_Moveable
        End Get
        Set(ByVal Value As Boolean)
            m_Moveable = Value
        End Set
    End Property

    Protected Overrides Sub WndProc(ByRef m As Message)
        If Not m_Moveable Then
            If _
                ( _
                    m.Msg = WM_SYSCOMMAND AndAlso _
                    m.WParam.ToInt32() = SC_MOVE _
                ) _
                OrElse _
                ( _
                    m.Msg = WM_NCLBUTTONDOWN AndAlso _
                    m.WParam.ToInt32() = HTCAPTION _
                ) _
            Then
                Return
            End If
        End If
        MyBase.WndProc(m)
    End Sub
End Class
///