Preventing a form from being moved

Preventing a form from being moved
<URL:https://dotnet.currifex.org/dotnet/faqs/nonmoveableform/en/>
----------------------------------------------------------------------------
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
///