VB.NET: Make a Form semi-transparent when moving and resizing it
Feb 17, 2005 • Visual Basic • .NETHere’s a little VB.NET code snippet that I wrote to make a Form semi-transparent when moving and resizing it. I think this is a neat little effect to add to an application.
Public Class frmTransparentMoveResize
Inherits System.Windows.Forms.Form
Private _OpacityResize As Double = 0.5 Private _OpacityMove As Double = 0.5
Private _OpacityOriginal As Double
Private Const WM_NCLBUTTONDOWN As Long = &HA1
Private Const WM_NCLBUTTONUP As Long = &HA0
Private Const WM_MOVING As Long = &H216
Private Const WM_SIZE As Long = &H5
Protected Overrides Sub DefWndProc(ByRef m As System.Windows.Forms.Message)
Static LButtonDown As Boolean
'Check the state of the Left Mouse Button
If CLng(m.Msg) = WM_NCLBUTTONDOWN Then
'set LButtonDown to True is Left Mouse Button is down
LButtonDown = True
ElseIf CLng(m.Msg) = WM_NCLBUTTONUP Then
'set LButtonDown to False is Left Mouse Button is not down
LButtonDown = False
End If
If LButtonDown Then
If CLng(m.Msg) = WM_MOVING Then
'Set the forms opacity to 50% if user is draging the window
If Me.Opacity <> _OpacityMove Then
_OpacityOriginal = Me.Opacity Me.Opacity = _OpacityMove
End If
ElseIf CLng(m.Msg) = WM_SIZE Then
'Set the forms opacity to 50% if user is resizing the window
If Me.Opacity <> _OpacityResize Then
_OpacityOriginal = Me.Opacity Me.Opacity = _OpacityResize
End If
End If
ElseIf Not LButtonDown Then
If Me.Opacity <> _OpacityOriginal Then Me.Opacity = _OpacityOriginal
End If
MyBase.DefWndProc(m)
End Sub
Public Property OpacityMove() As Double
Get
Return _OpacityMove
End Get
Set(ByVal Value As Double)
_OpacityMove = Value
End Set
End Property
Public Property OpacityResize() As Double
Get
Return _OpacityResize
End Get
Set(ByVal Value As Double)
_OpacityResize = Value
End Set
End Property
End Class