web-dev-qa-db-ja.com

ユーザーコントロール、カスタムコントロール、コンポーネントの違いは何ですか?

これらはプロジェクトに追加できる3つの異なるものであり、違いを理解しているかどうかはよくわかりません。これらはすべて、Formを操作するときにコンポーネントツールボックスに表示されるようです。それぞれの一般的な使用シナリオは何ですか?違いはなんですか?

78
Svish

ユーザーコントロール、カスタムコントロール、およびコンポーネントの主な違いは、継承ツリーの異なるレベルから継承することです。

MyComponent
   |-> Component

MyCustomControl
   |-> Control
          |-> Component

MyUserControl
   |-> ContainerControl
          |-> ScrollableControl
                 |-> Control
                        |-> Component

つまり、要するに、さまざまなオプションでさまざまな量の事前配線された機能を得ることができます。

さまざまなオプションをいつ使用しますか? (これらは、真実ではなく思考と意見です)

  • Iなしの機能(タイマーコンポーネント、データソースなど)を提供する場合は、コンポーネントを作成します。
  • カスタムコントロールを作成します。完全なその視覚的外観のコントロールを備えたコンポーネントを作成し、不要な機能の荷物が必要ないようにします。典型的なケースは、機能が制限されたシンプルなコントロール(ボタンなど)です。
  • 既存のコントロールを結合するを使用する場合は、ユーザーコントロールを作成して、再利用可能なビルディングブロック(リスト間で項目を移動できるボタンを備えた2つのリストなど)にします。
147
Fredrik Mörk

これは、CustomControlとUserControlの違いです。

カスタム制御

疎結合のw.r.tコードとUIコントロール

コントロールから派生

ResourceDictionaryでUIを定義します

UIはスキン可能です

動的なレイアウトを持っています

UIはさまざまなプロジェクトで変更できます

ツールボックスを完全にサポートしています

単一のコントロールを定義します

より柔軟に

===============

ユーザー制御

密結合されたコントロールw.r.tコードとUI

UserControlから派生

UIを通常のXAMLとして定義します

子コントロールはスキン可能です

静的レイアウトがあります

UIは修正されており、プロジェクトごとに外観を変えることはできません

ツールボックスに追加できません

コントロールのセットを定義します

カスタムコントロールのようにあまり柔軟ではない

4
Menard Laval

Fredrikが言ったことに加えて、一般にコンポーネントとカスタムコントロールはプロジェクト間で再利用する予定があるときに使用されます。 1つのプロジェクトでのみ使用する場合は、ユーザーコントロールを使用します。

2
Chad Yeates

私の意見では最後の発言は正しくないと思う。私はさまざまな理由でユーザーコントロールを作成しています。

主な理由は、複数のコントロールをグループ化したインターフェイスを設計するということです。

最初にクラスライブラリを作成し、次にユーザーコントロールを追加します。今、ユーザーコントロールの動作の背後にあるロジックの一部を変更する必要がある場合、非常に簡単にできます。また、このクラスライブラリは複数回使用できます。

また、同じ上品なライブラリ内で、複数のクラスを共有して、任意のユーザーコントロールに使用できます。

これが、ユーザーコントロールを使用する主な理由です。また、ユーザーコントロールまたはクラスライブラリに変更を加えた場合。仕事を築いたら。 dllはbinフォルダで動的に更新されます。

したがって、別のプロジェクトでこれを参照している場合、これらの変更は新しいプロジェクトにも表示されます。

また、フォームおよびフォームにロードしたものと同じPaintルーチンを使用しません。

そのため、ユーザーコントロールを使用すると、非常にモジュール化することができます。また、クラスライブラリの基本クラスを共有する複数のユーザーコントロールを使用することもできます。その点で制限はありません。ジェフ

0
Robopro