代码之家  ›  专栏  ›  技术社区  ›  3Doubloons

myproject.myclass-vb.net自定义控件

  •  1
  • 3Doubloons  · 技术社区  · 16 年前

    在一个VisualBasic项目中,我创建了一个自制的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 添加 MyPosits。 但是没有什么能阻止Visual Studio添加如此讨厌的 MyProject .

    编辑有关 this answer :

    我了解名称空间的相关内容,但是我的问题主要在于编译器无法识别附加了项目名称的类,但每次都会添加它。

    3 回复  |  直到 16 年前
        1
  •  0
  •   Joel Coehoorn    16 年前

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

        2
  •  1
  •   pipTheGeek    16 年前

    您得到的实际编译错误是什么?VB编译器是否可能将MyProject解释为命名空间标识符之外的其他内容?您还可以尝试更改项目的默认名称空间,然后查看它的功能,它可能会提示您实际的问题是什么。 你也可以试着把违规线改成

    Me.tabMenu = New Global.MyProject.MyClass
    

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

        3
  •  0
  •   John Rudy    16 年前

    默认情况下,VisualBasic.NET为项目分配了默认命名空间。(我认为违约事实上是, MyProject )

    这是预先准备好的,并且要在设计器中显式地标识类。

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

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

    此外,如果可以避免,一般不要修改.designer.vb文件。这些文件将被Visual Studio完全销毁并重建 经常 因此,您的更改将更有可能被消除。