私は一般的な考え方を持っていますが、いくつかの明白なケースがありますが、私はいくつかのグレーの領域があります - コンポーネントからの拡張に最も適しているのはいつですか?これは私が解決しようとしている具体的な仕事の問題に関係しますが、その詳細は重要ではありません - この質問に対する一般的な答えは私にとっては十分です。コンポーネントクラスとユーザーコントロールを追加するのはいつですか?
答えて
WPFとWindows Formsでは、主な違いは、UserControlがコントロールのコレクションであることです。つまり、複数のコントロールから構成された再利用可能な単一のオブジェクトです。
小さなコントロールで構成された「コントロール」を作成するのではなく、新しいビヘイビアで単一のプリミティブコントロールを作成する場合は、UserControlの代わりにComponent/CustomControl/Controlを使用します。通常、コンポーネントは非視覚的な動作で、CustomControl/Controlは通常はビジュアルコントロール用です。
一般に、コントロールにユーザーインターフェイス(または少なくともフォームに存在しないもの)がない場合は、Component
を使用します。 UIコントロールの場合は、代わりにUser Control
を作成します。
私は通常、UI機能をいくつかパッケージ化したいときにのみ、Controlやそれ以上のUserControlを拡張します。コンポーネントについては、私は古典的な例であるTimerを考えています。これをデザイナにドロップし、プロパティペインで設定した後、コードの背後にプログラムでアクセスすることができます。要するに、UIを持たないオブジェクトであるバンドルされた状態や動作をデザイナーが操作できるようにするために、Componentを拡張します。
コンポーネントとコントロールの間には大きな違いが1つあります。コントロールにはユーザーインターフェイスがあります。すべてのコントロールもコンポーネントですが、すべてのコンポーネントがコントロールではありません。ユーザーインターフェイスを表示する必要がある場合は、通常、何らかのコントロールベース(Control、UserControl、Formなど)から派生する必要があります。 BackgroundWorkerコンポーネントのような振る舞いを持っているだけの場合は、Componentから直接派生する必要があります。
もう1つのメモ...コンポーネントとコントロールの両方をデザイン面にドロップすることができます。コンポーネントはアイコンと特殊領域のラベルとして表示され、コントロールはデザイン面に直接表示されます。しかし、あなたが使うことができる3つ目のものがあります:単純なクラスです。デザイン面のサポートが必要ない場合は、コンポーネントまたはコントロールではなく、単純なクラスを使用することをお勧めします。必要なものすべてが設計時のサポートなしで100%の純粋な動作である場合、軽量で軽量です。
- 1. プログラムでSilverlightグリッド列にユーザーコントロールを追加することはできますか?
- 2. ツールボックスにユーザーコントロールを追加するにはどうすればよいですか?
- 3. ユーザーコントロールにページングを追加するにはどうすればよいですか?
- 4. wpfウィンドウにユーザーコントロールを追加する
- 5. 動的にユーザーコントロールを追加する
- 6. グループボックスにユーザーコントロールを追加する方法
- 7. Reactコンポーネントクラスのメソッドとして外部関数を追加できますか?以下は、コンポーネントリアクト考える
- 8. 追加の「サービス」またはBLLレイヤーをいつ追加するのですか?
- 9. 他のコンポーネントクラスからreactコンポーネントクラスを呼び出すことができません
- 10. デリゲートコントロールで複数のユーザーコントロールを追加する "AdditionalPageHead"
- 11. usercontrolデザイン時にプログラムで別のユーザーコントロールを追加する
- 12. ソリューションエクスプローラからwinformにユーザーコントロールを追加する
- 13. typescriptは別のコンポーネントクラスからコンポーネントクラス変数にアクセスします
- 14. プレースホルダーからのユーザーコントロールの追加と削除
- 15. テーブルにインデックスを追加するのはいつですか?
- 16. C#で動的にユーザーコントロールを追加するasp.net
- 17. Windows 8:C#コードでユーザーコントロールを追加する方法
- 18. WPFでパネルのユーザーコントロールを追加および削除する正しい方法
- 19. プロジェクトタイプで新しい「Webユーザーコントロール」を追加できません
- 20. Visual Studio 2010でWindowsフォームアプリケーションにユーザーコントロールを追加するにはどうすればよいですか?
- 21. 動的に追加するユーザーコントロールは、web.configファイルに登録さ
- 22. Pythonでいくつかの配列を追加するには?
- 23. Windowsフォームのパネルにユーザーコントロール(WPF)を追加するC#
- 24. WPFのキャンバスにユーザーコントロールを追加/削除する
- 25. Sharepoint 2013のWebパーツにユーザーコントロールを追加する
- 26. wp7のユーザーコントロールにアプリケーションバーを追加する方法
- 27. 既存のユーザーコントロールをWPFプロジェクトに追加する
- 28. ASPXファイルを追加せずにユーザーコントロールをテストするにはどうすればよいですか?
- 29. カスタムオブジェクトからユーザーコントロールにイベントハンドラを追加します。
- 30. 他のユーザーコントロールで1人のユーザーコントロールを見ることは可能ですか?