0

マルチプロジェクト ソリューションを単一プロジェクト ソリューションに再作成すると、プログラムが使用できなくなるという大きな問題が発生します。

すべてのコード ファイルを保存しましたが、問題は IDE でのデザイナーの表示とそれに関連するエラーです。

状況:
すべてのフォームは、移動中にフォームを透明にする cls_transform というクラスでサブクラス化されます。

Public Class cls_transform
       Inherits System.Windows.Forms.Form

Private _OpacityMove As Double = 0.5
Private _OpacityOriginal As Double = 1
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

Private Sub cls_transform_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

End Sub

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
        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

Private Sub InitializeComponent()
    Me.SuspendLayout()
    Me.ClientSize = New System.Drawing.Size(284, 262)
    Me.Name = "cls_transform"
    Me.ResumeLayout(False)
End Sub
End Class

これは、1 つの空のフォーム "frm_myForm" のコードがどのように見えるかです:

Public Class frm_myForm
       Inherits cls_transform

Private Sub frm_myForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

End Sub
End Class

そして、これはその形式の Designer コードです。

<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class frm_myForm
        Inherits cls_transform

'Form overrides dispose to clean up the component list.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
    Try
        If disposing AndAlso components IsNot Nothing Then
            components.Dispose()
        End If
    Finally
        MyBase.Dispose(disposing)
    End Try
End Sub

'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer

'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.  
'Do not modify it using the code editor.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
    Me.SuspendLayout()
    '
    'frm_myForm
    '
    Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
    Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
    Me.ClientSize = New System.Drawing.Size(284, 262)
    Me.Name = "frm_myForm"
    Me.Text = "frm_myForm"
    Me.ResumeLayout(False)

End Sub
End Class

フォームを表示する代わりに、IDE から「View Designer」を実行しようとすると、白い画面にエラーが表示されます。

このファイル内のクラスを設計できないため、デザイナーを表示できませんでした。デザイナーは、ファイル内の次のクラスを検査しました: frm_myForm --- 基本クラス 'noviprog.cls_transform' をロードできませんでした。アセンブリが参照され、すべてのプロジェクトがビルドされていることを確認してください。

これは、cls_transform を継承するすべてのフォームで発生します。

cls_transform が別のライブラリ (同じソリューションの別のプロジェクト) にあり、実際に動作するプロジェクトを参照していた場合。

コードファイルとそのクラスが同じプロジェクトにあるときにこれを機能させることは可能ですか?これを機能させる方法は?

4

0 に答える 0