我找到了很好的代码,可以在移动时使表单半透明。 我有一个多项目解决方案,其中一个项目对所有其他项目是通用的,并编译为dll,所有项目都引用了dll。 在每个项目中,只需要少量表格,而不是所有表格都需要制作半透明表格的代码。
我在哪里以及如何使用此代码用于某些表单时遇到问题。 这是一个代码:
Imports System.ComponentModel
Public Class clsTransForm
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
If CLng(m.Msg) = WM_NCLBUTTONDOWN Then
LButtonDown = True
ElseIf CLng(m.Msg) = WM_NCLBUTTONUP Then
LButtonDown = False
End If
If LButtonDown Then
If CLng(m.Msg) = WM_MOVING Then
If Me.Opacity <> _OpacityMove Then
_OpacityOriginal = Me.Opacity
Me.Opacity = _OpacityMove
End If
ElseIf CLng(m.Msg) = WM_SIZE Then
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
... etc...
Public Property OpacityResize() As Double
... etc...
我尝试在我的公共项目下创建一个类clsTransForm,但这会创建一个新表单。
如何配置此类仅用于某些表单?
在哪里以及如何把它?
答案 0 :(得分:1)
我建议将clsTransForm
标记为MustInherit
。然后,在您的其他表单中,继承自clsTransForm
而不是System.Windows.Forms.Form
。从clsTransform
继承的每个表单都会产生透明效果。
至于放置文件本身的位置:没关系。只是不要忘记在每个需要使用它的项目中向包含clsTransForm
的项目添加项目引用。