几种形式的普通类

时间:2013-08-19 20:08:09

标签: vb.net

我找到了很好的代码,可以在移动时使表单半透明。 我有一个多项目解决方案,其中一个项目对所有其他项目是通用的,并编译为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,但这会创建一个新表单。

如何配置此类仅用于某些表单?
在哪里以及如何把它?

1 个答案:

答案 0 :(得分:1)

我建议将clsTransForm标记为MustInherit。然后,在您的其他表单中,继承自clsTransForm而不是System.Windows.Forms.Form。从clsTransform继承的每个表单都会产生透明效果。

至于放置文件本身的位置:没关系。只是不要忘记在每个需要使用它的项目中向包含clsTransForm的项目添加项目引用。