プロジェクト名前空間の下の名前空間にあるように UserControls をどのように定義しますか。[RootNameSpace].[SubSectionOfProgram].Controls?
camaincの回答による編集:すべてのコードを単一のプロジェクトに含める必要があるという制約もあります。
編集して質問を確定します:私が必要としたことを行うことは不可能だと思ったので、カメインクの答えが最も近い解決策です。
プロジェクト名前空間の下の名前空間にあるように UserControls をどのように定義しますか。[RootNameSpace].[SubSectionOfProgram].Controls?
camaincの回答による編集:すべてのコードを単一のプロジェクトに含める必要があるという制約もあります。
編集して質問を確定します:私が必要としたことを行うことは不可能だと思ったので、カメインクの答えが最も近い解決策です。
これがあなたの求めているものかどうかはわかりませんが、これが私たちのやり方です。
すべてのプロジェクトに一貫した方法で名前を付けます。ユーザー コントロールも例外ではありません。プロジェクト設定ウィンドウを使用して名前空間を作成することもできますが、プロジェクト ウィンドウとコードを組み合わせて行うこともできます。
各ソリューションは、次のような名前空間を取得します。
[CompanyName].[SolutionName].[ProjectName]
したがって、ユーザー コントロールは通常、"Controls" という名前のプロジェクトにあり、次の名前空間があります。
OurCompany.ThisSolution.Controls
複数の異なるソリューションにまたがる可能性のあるコントロールがある場合は、次のように名前空間を設定します。
OurCompany.Common.Controls
次に、コードでライブラリをインポートするか、プロジェクトをソリューションに追加します。
Imports OurCompany
Imports OurCompany.Common
Imports OurCompany.Common.Controls
また、プロジェクトが存在するフォルダーに名前空間と同じ名前を付けます (会社名までは含みますが、会社名は含みません) (すべてのソリューションは会社の名前空間にあると想定されます)。
\Projects
\Projects\MySolution
\Projects\MySolution\Controls
- また -
\Projects\
\Projects\Common
\Projects\Common\Assemblies
\Projects\Common\Controls
等
それが役立つことを願っています...
コントロールを別のプロジェクトに配置したくない場合は、コード ファイルの先頭に Namespace キーワードを追加するだけです。たとえば、いくつかのプロジェクトで次のようなことを行いました。
Imports System.ComponentModel
Namespace Controls
Friend Class FloatingSearchForm
'Your code goes here...
End Class
End Namespace
コントロールが含まれるプロジェクトに指定されたものとは異なるルート名前空間にコントロールがあることを指定することはできません。VB は、プロジェクトのプロパティ ウィンドウで指定された名前空間に、名前空間に指定したものを単純に追加します。したがって、プロジェクト全体が「AcmeCorporation.WidgetProgram」で、「Namespace Controls」をコントロール ファイルの先頭に追加すると、コントロールは名前空間「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
実行時に(コードで)ユーザーコントロールにアクセスできるようにしたいということですか?
[ProjectNamespace].[YourSpecialNamespace].Controls
デフォルトではなく
[ProjectNamespace].Controls
?それが可能だとは思わないからです。私が間違っていなければControls
、プロジェクト/アプリのコレクションはフレームワークに組み込まれています。変更することはできません。camaincが指摘したように、プロジェクト設定ウィンドウ(またはコード)を使用して、コントロール自体を特定の名前空間に配置できます。
Namespace [YourSpecialNamespace]
Public Class Form1
[...]
End Class
End Namespace
もちろん、もう少し考えてみるとControls
、名前空間で独自のコレクションを設計および構築できると思います-おそらく組み込みのコレクションのラッパーとして...