2008-10-27 3 views
1

В проекте Visual Basic я создал самодельный TabControl для исправления визуальной ошибки. Управления работает должным образом, однако всякий раз, когда я изменить форму, используя мой счет, Visual Studio добавляет MyProject перед контролем в своем заявлении:MyProject.MyClass - пользовательские элементы управления vb.NET

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:

Я понимаю вещь о пространстве имен, однако моя проблема заключается в основном о том, что компилятор не распознает класс с именем проекта, приложенном но все же добавляет его каждый раз.

+0

Является ли пользовательский элемент управления вкладками, который вы создали в своем собственном пространстве имен, возможно, переопределяя значение по умолчанию? – 2008-10-28 15:36:19

ответ

0

Я видел это раньше, когда у вас есть открытый модуль с тем же именем, что и пространство имен по умолчанию (название проекта). Если это так, переименуйте модуль или пространство имен по умолчанию, и проблема должна исчезнуть.

0

По умолчанию Visual Basic .NET назначил пространство имен по умолчанию для вашего проекта. (Я считаю, что по умолчанию MyProject.)

Это то, что добавляется, и это делается для того, чтобы явно определить ваш класс в дизайнере.

Независимо от того, какое пространство имен по умолчанию для вашего проекта, дизайнер WinForms добавит имя пространства имен в файл .designer.vb.

Чтобы изменить пространство имен по умолчанию, перейдите к своим свойствам проекта; он должен появиться на первой вкладке.

Также, как правило, не изменяйте файлы .designer.vb, если вы можете избежать этого. Эти файлы полностью сдуваются и перестраиваются Visual Studio часто, поэтому ваши изменения скорее всего будут устранены.

1

Какова фактическая ошибка компиляции, которую вы получаете? Возможно ли, что компилятор VB интерпретирует MyProject как нечто иное, чем идентификатор пространства имен? Вы также можете попробовать изменить пространство имен по умолчанию для проекта, а затем посмотреть, что он делает, он может дать вам подсказку о том, что представляет собой настоящая проблема. Вы также можете попробовать изменить обижая строку

Me.tabMenu = New Global.MyProject.MyClass 

то дайте нам знать, что результаты.

Смежные вопросы