MyProject.MyClass - пользовательские элементы управления vb.NET - PullRequest
1 голос
/ 27 октября 2008

В проекте 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.

Изменить относительно этот ответ :

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

Ответы [ 3 ]

1 голос
/ 06 ноября 2008

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

Me.tabMenu = New Global.MyProject.MyClass

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

0 голосов
/ 11 ноября 2008

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

0 голосов
/ 27 октября 2008

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

Это то, что готовится, и это делается для явной идентификации вашего класса в конструкторе.

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

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

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

...