1

Visual Basicプロジェクトでは、視覚的なバグを修正するために、自家製のTabControlを作成しました。コントロールは正しく機能しますが、タブを使用してフォームを変更するたびに、VisualStudioは宣言のコントロールの前に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.ましたが、VisualStudioがこの嫌いなものを追加するのを妨げるものは何もありませんでしたMyProject

この回答に関する編集:

名前空間については理解していますが、私の問題は、ほとんどの場合、コンパイラがプロジェクト名が追加されたクラスを認識せず、毎回追加することです。

4

3 に答える 3

1

あなたが得ている実際のコンパイルエラーは何ですか? VB コンパイラが MyProject を名前空間識別子以外のものとして解釈している可能性はありますか? プロジェクトのデフォルトの名前空間を変更してみて、それが何をするかを確認することもできます。実際の問題が何であるかについてのヒントが得られるかもしれません。問題のある行を次のように変更することもできます

Me.tabMenu = New Global.MyProject.MyClass

その後、結果をお知らせください。

于 2008-11-06T19:59:27.540 に答える
0

既定では、Visual Basic .NET によって既定の名前空間がプロジェクトに割り当てられます。(実際、デフォルトは だと思いますMyProject。)

これが先頭に追加されるものであり、デザイナーでクラスを明示的に識別するために行われています。

プロジェクトの既定の名前空間が何であれ、WinForms デザイナーは名前空間名を .designer.vb ファイルに追加します。

デフォルトの名前空間を変更するには、プロジェクトのプロパティに移動します。最初のタブに表示されるはずです。

また、通常、回避できる場合は .designer.vb ファイルを変更しないでください。これらのファイルは完全に吹き飛ばされ、Visual Studio によって頻繁に再構築されるため、変更が削除される可能性が高くなります。

于 2008-10-27T19:07:24.503 に答える
0

デフォルトの名前空間 (プロジェクト名) と同じ名前のパブリック モジュールがある場合に、これを以前に見たことがあります。その場合は、モジュールまたはデフォルトの名前空間の名前を変更すると、問題が解決するはずです.

于 2008-11-11T14:33:58.833 に答える