ホームページ >バックエンド開発 >C++ >カスタム Windows フォーム コントロールでデザイン時の列のサイズ変更を有効にするにはどうすればよいですか?

カスタム Windows フォーム コントロールでデザイン時の列のサイズ変更を有効にするにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-05 18:21:41142ブラウズ

How Can I Enable Design-Time Column Resizing in Custom Windows Forms Controls?

カスタム コントロールでのデザイン サポートの有効化

カスタム コントロールを作成するときは、基本コントロールと同じ機能を維持することが望ましいです。そのような機能の 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。