【问题标题】:MyProject.MyClass - vb.NET custom controlsMyProject.MyClass - vb.NET 自定义控件
【发布时间】:2010-09-19 10:52:34
【问题描述】:

在一个 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

编辑this answer:

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

【问题讨论】:

  • 您在自己的命名空间中构建的自定义选项卡控件是否覆盖了默认值?

标签: vb.net visual-studio-2005 controls code-generation


【解决方案1】:

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

Me.tabMenu = New Global.MyProject.MyClass

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      这是预先添加的内容,并且这样做是为了在设计器中明确标识您的类。

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

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

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

      【讨论】:

        猜你喜欢
        • 2015-08-28
        • 1970-01-01
        • 1970-01-01
        • 2016-09-26
        • 2012-01-16
        • 2018-02-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多