VB.NET WinForms项目的子命名空间中是否可以有窗体?

kcwpcxri  于 2022-11-16  发布在  .NET
关注(0)|答案(1)|浏览(167)

如果我在VB.NET中创建一个新的类库项目,我可以创建子文件夹(类似于C#),将WinForm对象添加到这些子文件夹中,然后指定一个命名空间:

Namespace Sub1.Sub2
    Public Class SomeForm
        Public Sub New()
            InitializeComponent()
        End Sub
    End Class
End Namespace

这将解析为ProjectRootNamespace.Sub1.Sub2.SomeForm,这很好。
但是,如果我在VB.NET中创建一个新的WinForms项目,并尝试执行相同的操作,则会在设计器中出现以下错误:
The class SomeForm can be designed, but is not the first class in the file. Visual Studio requires that designers use the first class in the file. Move the class code so that it is the first class in the file and try loading the designer again.
有没有办法让窗体位于VB.NET WinForms应用程序的子命名空间中,而不是根命名空间中?

vhipe2zx

vhipe2zx1#

是否同时重命名Form.vb和Form.Designer.vb中的命名空间?您需要确保这两个文件声明相同的对象。
示例Form.vb

Namespace X
    Namespace Y
        Public Class Form1

        End Class
    End Namespace
End Namespace

Form.Designer.vb

Namespace X
    Namespace Y
        <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
        Partial Class Form1
            Inherits System.Windows.Forms.Form
            
            <System.Diagnostics.DebuggerStepThrough()> _
            Private Sub InitializeComponent()
                ...

        End Class
    End Namespace
End Namespace

相关问题