カスタム コントロールでのデザイン サポートの有効化
カスタム コントロールを作成するときは、基本コントロールと同じ機能を維持することが望ましいです。そのような機能の 1 つは、設計時にヘッダーをドラッグして列のサイズを変更する機能です。ただし、既定では、カスタム コントロールはこの動作を継承しません。
Windows フォーム デザイナーは、特定のコントロールに専用のデザイナー クラスを使用します。たとえば、ListView のデザイナーは、内部 System.Windows.Forms.Design.ListViewDesigner クラスです。ユーザー コントロールに ListView を配置する場合、代わりにデフォルトの ControlDesigner が使用されますが、これには列ヘッダーをドラッグする機能がありません。
これを解決するには、ユーザー コントロールのカスタム デザイナーを作成します。基になる ListView をパブリック プロパティを通じて公開し、[DesignerSerializationVisibility] 属性を適用すると、設計時に ListView のプロパティにアクセスして変更できます。さらに、[Designer] 属性をユーザー コントロール クラスに適用すると、デフォルトのデザイナーをカスタム デザイナーに置き換えることができます。
次の例を考えてみましょう。
using System; using System.ComponentModel; using System.Drawing; using System.Windows.Forms; using System.Windows.Forms.Design; // Note: add reference required: System.Design.dll namespace WindowsFormsApplication1 { [Designer(typeof(MyDesigner))] // Note: custom designer public partial class UserControl1 : UserControl { public UserControl1() { InitializeComponent(); } // Note: property added [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] public ListView Employees { get { return listView1; } } } // Note: custom designer class added class MyDesigner : ControlDesigner { public override void Initialize(IComponent comp) { base.Initialize(comp); var uc = (UserControl1)comp; EnableDesignMode(uc.Employees, "Employees"); } } }
このカスタム デザイナーを使用する、ユーザー コントロール内の ListView をクリックして、スタンドアロンの ListView と同じように設計できます。
以上がカスタム Windows フォーム コントロールでデザイン時の列のサイズ変更を有効にするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。