2008-10-27 4 views
1

Visual Basic 프로젝트에서 시각적 버그를 수정하기 위해 수제 TabControl을 만들었습니다. 제어가 내 탭을 사용하여 양식을 수정하지만 때마다 제대로 작동, 비주얼 스튜디오는 MyProject를이 선언에서 컨트롤 앞에 추가합니다MyProject.MyClass - vb.NET 사용자 지정 컨트롤

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

을 나는 MyProject. 제거하면, 프로젝트가 제대로 컴파일합니다.

MyClass에 별도의 파일 MyClass.vb에와 같이 대부분 같습니다 클래스 이름에 MyProject.를 추가

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 내부의 클래스를 붙여 파일을 제거하고 다시 추가하는 시도

, , 그러나 아무것도 Visual Studio에서 이렇게 희미 해지는 MyProject을 추가하는 것을 멈추지 않았습니다. this answer에 대한

편집 :

는 그러나 나는 내 문제는 컴파일러가 추가 프로젝트 이름을 가지는 클래스를 인식하지 못하는 대부분이다, 네임 스페이스에 대한 일을 이해하지만 여전히 매번 추가합니다.

+0

사용자 지정 탭 컨트롤은 고유 한 네임 스페이스에 구축되어 기본 설정보다 우선 적용됩니까? –

답변

0

기본 네임 스페이스 (프로젝트 이름)와 동일한 이름을 가진 공용 모듈이있는 경우 이전에이 내용을 보았습니다. 그렇다면 모듈 또는 기본 네임 스페이스의 이름을 바꾸면 문제가 없어집니다.

0

기본적으로 Visual Basic .NET은 프로젝트에 기본 네임 스페이스를 할당했습니다. (기본값은 사실 MyProject이라고 생각합니다.)

이것은 앞에 붙인 것으로 디자이너에서 클래스를 명시 적으로 식별하기위한 것입니다.

프로젝트의 기본 네임 스페이스가 무엇이든 관계없이 WinForms 디자이너는 .designer.vb 파일에 네임 스페이스 이름을 추가합니다.

기본 네임 스페이스를 변경하려면 프로젝트 속성으로 이동하십시오. 첫 번째 탭에 나타납니다.

또한 일반적으로 .designer.vb 파일은 피할 수 있으면 수정하지 마십시오. 이러한 파일은 Visual Studio 에 자주 묻어 버리고 다시 작성되며 종종으로 변경되므로 변경 사항이 제거되지 않을 가능성이 큽니다.

1

실제 컴파일 오류는 무엇입니까? VB 컴파일러가 MyProject를 네임 스페이스 식별자가 아닌 것으로 해석 할 가능성이 있습니까? 또한 프로젝트의 기본 네임 스페이스를 변경 한 다음 그 내용을 확인하면 실제 문제가 무엇인지에 대한 힌트를 얻을 수 있습니다. 당신은 또한 다음 우리가 결과가 알려

Me.tabMenu = New Global.MyProject.MyClass 

에 문제를 일으키는 라인을 변경 시도 할 수 있습니다.