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


81

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

回答:


162

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

MyComponent
   |-> Component

MyCustomControl
   |-> Control
          |-> Component

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

つまり、さまざまなオプションを使用して、さまざまな量の配線済み機能を利用できます。

いつさまざまなオプションを使用しますか?(これらは考えや意見であり、真実ではありません)

  • UIなしで機能を提供する場合は、コンポーネントを作成します(タイマーコンポーネント、データソースなど)。
  • 外観を完全に制御できるコンポーネントを作成し、不要な機能の手荷物を必要としない場合は、カスタムコントロールを作成します。典型的なケースは、機能が制限された単純なコントロール(ボタンなど)です。
  • 既存のコントロールを再利用可能なビルディングブロック(リスト間でアイテムを移動できるボタンのある2つのリストなど)に結合する場合は、ユーザーコントロールを作成します

16
ええ、理解するのに少し時間がかかりましたUserControlが、実際には「複合」コントロール(他のコントロールから作成されたコントロール)であるように見えますが、カスタムコントロールは実際にはユーザーが設計したコントロールです。
Dave Cousineau

カスタムおよび動的に描画されたグラフィックを間に含む複数のTextBoxで構成されるコントロールを作成する場合は、選択する必要がありますUserControlか?
Nick Alexeev 2014年

@NickAlexeev数年前から、WinFormsの世界であまり仕事をしていませんが、それが道のりだと思います。
フレドリックモルク

2
@FredrikMörkいい答えです!カスタムコントロールの作成方法を学ぶことができるサイトを提案してもらえますか?
ジョン・オドム

1
youtubeの@JohnOdomAngelSixシリーズは一緒に行くものです。私はそれがビデオ9にあることを確認しました、そして具体的には彼は26:00にそれを使用しました
Mour_Ka

2

Fredrikが言ったことに加えて、プロジェクト全体でそれらを再利用することを計画するときは、通常、コンポーネントとカスタムコントロールが使用されます。1つのプロジェクトでのみ使用する場合は、ユーザーコントロールを使用します。


10
なぜそうなのか?単一のプロジェクトでユーザーコントロールを使用する利点、複数のプロジェクトで使用できる制限...?
カミロマーティン

1

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

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

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

また、同じ上品なライブラリ内に、任意のユーザーコントロールで共有および使用できる複数のクラスを含めることができます。

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

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

また、フォームやフォームにロードしたものと同じペイントルーチンを使用しません。

したがって、ユーザーコントロールは、非常にモジュール化できる機能を提供します。また、クラスライブラリの基本クラスを共有する複数のユーザーコントロールを持つことができます...したがって、ユーザーコントロールの目的は1つのプロジェクトだけではありません。その点で制限はありません。ジェフ


「私は最後の文は、私の意見では正しくないと考えている」の最後の文-?[そして、それは読者がすぐにあなたが参照しているか知っているので、あなたの答えに声明を引用するのがベストでしょう。]
ToolmakerSteve

-5

それらの主な違い- ユーザーコントロールは、単一のアプリケーションまたはプロジェクト内でのみ使用できる拡張子.ascxのページファイルですが、カスタムコントロールは、複数のアプリケーションで使用できるアセンブリ(dllファイル)です。


7
問題は、ASP.NETではなくWinFormsに関するものでした。
qwertie 2014年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.