1

在一个 Visual Basic 项目中,我创建了一个自制的 TabControl 以修复一个视觉错误。该控件正常工作,但是每当我使用选项卡修改表单时,Visual Studio 在其声明中的控件前面添加 MyProject:

Me.tabMenu = New MyProject.MyClass 'Gives a BC30002 compile error

如果我删除MyProject.,项目编译正确。

MyClass 位于单独的文件 MyClass.vb 中,大致如下所示:

Public Class MyClass
Inherits System.Windows.Forms.TabControl

Public Sub New()
    InitializeComponent()
    MyBase.DrawMode = System.Windows.Forms.TabDrawMode.OwnerDrawFixed
End Sub

Protected Overrides Sub OnDrawItem(ByVal e As System.Windows.Forms.DrawItemEventArgs)
    //OnDrawItem code
End Sub

Private Sub My_DrawItem(ByVal sender As Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles Me.DrawItem
    //My_DrawItem code
End Sub
End Class

我尝试删除文件并再次添加,复制并粘贴里面的类MyForm.designer.vb,添加MyProject.到类名,但没有什么阻止 Visual Studio 添加这个讨厌的MyProject.

关于这个答案的编辑:

我了解命名空间的事情,但是我的问题主要是编译器无法识别附加了项目名称的类,但仍然每次都添加它。

4

3 回答 3

1

您得到的实际编译错误是什么?VB 编译器是否有可能将 MyProject 解释为命名空间标识符以外的东西?您还可以尝试更改项目的默认命名空间,然后查看它的作用,它可能会提示您实际问题是什么。您也可以尝试将违规行更改为

Me.tabMenu = New Global.MyProject.MyClass

然后让我们知道结果是什么。

于 2008-11-06T19:59:27.540 回答
0

默认情况下,Visual Basic .NET 为您的项目分配了一个默认命名空间。(我相信默认值实际上是MyProject.)

这是前面的内容,并且正在执行以在设计器中明确标识您的类。

无论项目的默认命名空间是什么,WinForms 设计器都会将命名空间名称添加到 .designer.vb 文件中。

要更改默认命名空间,请转到您的项目属性;它应该出现在第一个选项卡上。

此外,如果可以避免,一般不要修改 .designer.vb 文件。这些文件经常被 Visual Studio 彻底清除和重建,因此您的更改很可能会被消除。

于 2008-10-27T19:07:24.503 回答
0

当您有一个与默认命名空间(项目名称)同名的公共模块时,我之前已经看到过这种情况。如果是这种情况,请重命名模块或默认命名空间,问题应该会消失。

于 2008-11-11T14:33:58.833 回答