2011-10-20 2 views
1

ListBoxクラスを継承していくつかの関数をオーバーライドしてカスタムリストボックスを作成する場合は、ユーザーコントロールまたはカスタムコントロールを作成する必要がありますか?私は、私はユーザーコントロールを使用する必要がありますが、私はユーザーコントロールを追加する必要があることを読んだが、私は削除することはできませんデザイナーのパネルコントロールが付属しています。カスタムリストボックスを作成する

そして、私はユーザーコントロールのためにpublic partial class UserControl1 : ListBoxpublic partial class UserControl1 : UserControlを変更しようとすると、VSがAutoScaleModeAutoScaleDimensionsなどのプロパティを追加しません。

+0

自動スケーリングは、リストボックスではなく、コンテナのジョブです。 ListBoxからの派生は正しいです、それをUserControl1と呼んではいけません。 –

+0

私はVSのデフォルト設定を例として使用しました。 User ControlフォームとしてListBoxから派生すると、VSは設定を自動調整しないため、エラーが発生します。だからこそ私はUser Controlが適切か、Custom Controlを代わりに使うべきかを尋ねている。 – Jack

答えて

2

UserControlはコンテナコントロールです。それはパネルに付属していません - です。 "パネル"の一種です(パネルではありません - それはちょうど空のContainerControlです)。あなたはそれらを配置することができます。カスタムコントロールはControlから派生したもので、コード内に純粋に作成して配置しますが、通常、単純なコントロールにはサブコントロールはありません。

私が誤解していない限り、ListBoxから継承するには、それらのプロパティを自分で追加する必要があります。

ちなみに、ListBoxにカスタム要素を描画するだけで機能を変更する必要がない場合は、代わりにListBoxをオーナー描画することを検討してください。インターネットには多くの例があります。

+0

私は、ユーザーコントロールまたはカスタムコントロールを既存のwinformsコントロールからカスタムコントロールを作成するために使用するかどうかを確認しています。カスタムコントロールのListBoxから継承すると、Visual StudioとIntellisenseは自動的に調整され、User Controlの場合は機能しません。 – Jack

+0

@Jack:どちらもありません。可能であれば、あなたは継承します。 (そうでない場合は、カスタムコントロールを使用することもできますが、通常はユーザーコントロールではありません) – Ryan

+1

継承はどういう意味ですか?既存のコントロールを変更したい場合は、ユーザーコントロール/カスタムコントロールを作成し、それを継承する必要があります。 – Jonas

関連する問題