2008-09-15 29 views
0

UserControlsをプロジェクト名前空間の下の名前空間にあるものとして定義します。 [RootNameSpace]。[SubSectionOfProgram] .Controls?VB.NETでWinForms UserControlの名前空間を設定する

camaincの回答による編集:私は、1つのプロジェクトにすべてのコードを入れなければならないという制約もあります。

質問を確定するために編集:私は、私が必要としていることをすることはできないと思ったので、camaincの答えは最も近い解決策です。

答えて

1

これがあなたが求めているのかどうかはわかりませんが、これが私たちのやり方です。

私たちはすべてのプロジェクトを一貫した方法でネームスペースしますが、ユーザーコントロールには違いはありません。また、プロジェクトウィンドウとコードの組み合わせで行うこともできますが、プロジェクト設定ウィンドウを使用して名前空間も名前空間にします。

各ソリューションは、このような名前空間を取得:我々場合

OurCompany.ThisSolution.Controls 

:だから

[CompanyName].[SolutionName].[ProjectName] 

を、当社のユーザーコントロールは、の名前空間を持つことになり、「コントロール」と呼ばれるプロジェクトで、通常ですいくつかの異なるソリューションにまたがるコントロールを持っていれば、そのような名前空間になります。

OurCompany.Common.Controls 

次に、私たちのコードで、ライブラリをインポートするか、プロジェクトをソリューションに追加します。

Imports OurCompany 
Imports OurCompany.Common 
Imports OurCompany.Common.Controls 

我々はまた、プロジェクトがまで、名前空間と同じように生きるが、会社名を(すべてのソリューションは、企業のネームスペースにあるものと想定されている)を含まないフォルダに名前を付ける:プロジェクト
を\


\プロジェクト\

- または - プロジェクト\ \ MySolution
プロジェクト\ \ MySolution \は

を制御しますプロジェクト\共通
\プロジェクト\共通\ \プロジェクト\共通\アセンブリ

を制御します\など

役に立てば幸い...

+0

私はあなたにマークしています。しかし、それは私の現在の問題を解決するものではありませんので、私はその質問にいくつかの説明を追加しました。 –

0

あなたは(コードで)実行時にユーザーコントロールにアクセスできるようにしたいわけでください

[ProjectNamespace].[YourSpecialNamespace].Controls

ではなく

[ProjectNamespace].Controls

のデフォルト経由

?私はそれが可能であるとは信じていないからです。私が間違っていない場合は、プロジェクト/アプリケーションのControlsコレクションがフレームワークによって組み込まれています。変更することはできません。

Namespace [YourSpecialNamespace]

Public Class Form1

[...]

End Class

:camaincが述べたようにあなたは、thusly特定の名前空間内のコントロール自体を配置するプロジェクト設定ウィンドウ(またはコード)を使用することができます

End Namespace

もちろん

、それについてもう少し考えて、私はあなたの名前空間に独自のControlsコレクションを設計し、構築することができたと - おそらく内蔵の1 ...

1

あなたはドン場合」のラッパーとして別のプロジェクトにコントロールを追加したい場合は、Namespaceキーワードをコードファイルの先頭に追加するだけです。例えば、私はいくつかのプロジェクトではこのような何かをやった:あなたがコントロールは、彼らはの一部であるプロジェクトのために指定されたものと異なるルートの名前空間であることを指定することはできません

Imports System.ComponentModel 

Namespace Controls 
    Friend Class FloatingSearchForm 

     'Your code goes here... 

    End Class 
End Namespace 

。 VBは、プロジェクトプロパティウィンドウで指定された名前空間に名前空間に指定したものを単に追加します。したがって、プロジェクト全体が「AcmeCorporation.WidgetProgram」で、コントロールファイルの先頭に「名前空間コントロール」を追加すると、コントロールは名前空間「AcmeCorporation.WidgetProgram.Controls」になります。コントロールを "AcmeCorporation.SomeOtherProgram.Controls"名前空間に表示することはできません。

デザイナを使用してコントロールを編集する場合は、デザイナーが作成した隠しパーシャルクラスにNamespaceキーワードを追加する必要があります。ソリューションエクスプローラで[すべてのファイルを表示]ボタンをクリックし、コントロールの横にある展開矢印をクリックします。 「* .Designer.vb」ファイルがリストされているはずです。そのファイルにも名前空間を追加します。設計者はこの変更を尊重し、プロジェクトはエラーなくコンパイルされます。明らかに、デザイナーの部分クラスで指定された名前空間は、クラスファイルで指定された名前空間と同じでなければなりません!上記の例の場合:

Namespace Controls 
    <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _ 
    Partial Class FloatingSearchForm 

     'Designer generated code 

    End Class 
End Namespace 
関連する問題