Windows フォーム アプリケーションでは、特定のコントロールには、デザイン モードでのカスタマイズ機能を強化する専用のデザイナーがあります。ただし、そのようなコントロールをカスタム UserControl 内に埋め込む場合、これらの拡張されたデザイン機能は利用できない場合があります。
一例として、ListView コントロールがあります。標準フォームでは、ユーザーはデザイン モードで列ヘッダーをドラッグ アンド ドロップしてサイズを変更できます。ただし、UserControl 内に埋め込まれた場合、この機能は存在しません。
この制限を克服するには、Windows フォーム デザイナー アーキテクチャを利用できます。カスタム デザイナー クラスを作成すると、標準の ControlDesigner から基になるコントロールの特殊なデザイナーにデザイン サポートをリダイレクトできます。
ListView を含むカスタム UserControl にこれを実装する方法は次のとおりです。
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public ListView Employees { get { return listView1; } }
[Designer(typeof(MyDesigner))] public partial class UserControl1 : UserControl { // ... }
public class MyDesigner : ControlDesigner { public override void Initialize(IComponent comp) { base.Initialize(comp); // Enable design mode for the "Employees" ListView var uc = (UserControl1)comp; EnableDesignMode(uc.Employees, "Employees"); } }
これらの変更後、 UserControl 内に埋め込まれた ListView は、設計上のドラッグ アンド ドロップによる列のサイズ変更機能を取り戻します。
この手法を使用すると、カスタム デザイナーの力を利用して、コントロールのデザイン時の機能を拡張し、UserControl を使用する開発者に最適なユーザー エクスペリエンスを提供できます。
以上がカスタム Windows フォーム ユーザー コントロールの埋め込みコントロールのデザイン時サポートを拡張するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。