これらはプロジェクトに追加できる3つの異なるものであり、違いを理解しているかどうかはよくわかりません。これらはすべて、Form
を操作するときにコンポーネントツールボックスに表示されるようです。それぞれの一般的な使用シナリオは何ですか?違いはなんですか?
ユーザーコントロール、カスタムコントロール、およびコンポーネントの主な違いは、継承ツリーの異なるレベルから継承することです。
MyComponent
|-> Component
MyCustomControl
|-> Control
|-> Component
MyUserControl
|-> ContainerControl
|-> ScrollableControl
|-> Control
|-> Component
つまり、要するに、さまざまなオプションでさまざまな量の事前配線された機能を得ることができます。
さまざまなオプションをいつ使用しますか? (これらは、真実ではなく思考と意見です)
疎結合のw.r.tコードとUIコントロール
コントロールから派生
ResourceDictionaryでUIを定義します
UIはスキン可能です
動的なレイアウトを持っています
UIはさまざまなプロジェクトで変更できます
ツールボックスを完全にサポートしています
単一のコントロールを定義します
より柔軟に
===============
密結合されたコントロールw.r.tコードとUI
UserControlから派生
UIを通常のXAMLとして定義します
子コントロールはスキン可能です
静的レイアウトがあります
UIは修正されており、プロジェクトごとに外観を変えることはできません
ツールボックスに追加できません
コントロールのセットを定義します
カスタムコントロールのようにあまり柔軟ではない
Fredrikが言ったことに加えて、一般にコンポーネントとカスタムコントロールはプロジェクト間で再利用する予定があるときに使用されます。 1つのプロジェクトでのみ使用する場合は、ユーザーコントロールを使用します。
私の意見では最後の発言は正しくないと思う。私はさまざまな理由でユーザーコントロールを作成しています。
主な理由は、複数のコントロールをグループ化したインターフェイスを設計するということです。
最初にクラスライブラリを作成し、次にユーザーコントロールを追加します。今、ユーザーコントロールの動作の背後にあるロジックの一部を変更する必要がある場合、非常に簡単にできます。また、このクラスライブラリは複数回使用できます。
また、同じ上品なライブラリ内で、複数のクラスを共有して、任意のユーザーコントロールに使用できます。
これが、ユーザーコントロールを使用する主な理由です。また、ユーザーコントロールまたはクラスライブラリに変更を加えた場合。仕事を築いたら。 dllはbinフォルダで動的に更新されます。
したがって、別のプロジェクトでこれを参照している場合、これらの変更は新しいプロジェクトにも表示されます。
また、フォームおよびフォームにロードしたものと同じPaintルーチンを使用しません。
そのため、ユーザーコントロールを使用すると、非常にモジュール化することができます。また、クラスライブラリの基本クラスを共有する複数のユーザーコントロールを使用することもできます。その点で制限はありません。ジェフ