アプリケーションで複数回使用するカスタムコントロールをC#で作成したいのですが、他のアプリケーションでは使用しない可能性があります。カスタムコントロールを作成してVisualStudioツールボックスに追加する方法を説明しているWebサイトをいくつか見ました。DLLにコンパイルするカスタムコントロールを使用してプロジェクトを作成し、アプリケーションの新しいプロジェクトを作成して、ツールボックスにそのDLLへの参照を追加するように指示します。ただし、DLLに依存しない単一の実行可能ファイルにする必要があります。カスタムコントロールとアプリケーションを1つのプロジェクトに入れても、カスタムコントロールをVisual Studioツールボックスに表示する方法はありますか?または、ツールボックスにコントロールを追加できない場合、アプリケーションのデザイナでコントロールを表示する別の方法はありますか?
1325 次
1 に答える
2
テクニックは次のとおりです。
プロジェクトを開発するには、通常どおりコンポーネントを使用できます(つまり、コンポーネントをDLLとしてツールボックスに追加し、プロジェクトで参照します)。
1つのexeファイルでdllを内部的に使用するには、プロジェクトのリソースにdllを(rawまたはdeflatedのいずれかで)追加する必要があります。
Mainメソッドで、AppDomain.AssemblyResolveイベントをサブスクライブします。
public static void Main( string[] args ) { AppDomain.CurrentDomain.AssemblyResolve += AppDomain_AssemblyResolve; }
イベントハンドラでは、コンポーネントを使用してアセンブリを解決する必要があります。
private static Assembly AppDomain_AssemblyResolve( object sender, ResolveEventArgs args ) { if( args.Name.Contains( "YourComponent" ) ) { using( var resource = new MemoryStream( Resources.YourComponent ) ) return Assembly.Load( resource.GetBuffer() ); } return null; }
その後、アプリはexeから抽出されたこのアセンブリを使用しますが、開発中にツールボックスのコンポーネントを使用することはできます。
コンポーネントが変更されるたびに、リソースで更新する必要があることに注意してください。
于 2010-07-28T21:50:53.693 に答える