首頁 >後端開發 >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?

在自訂控制項中啟用設計支援

建立自訂控制項時,最好保持與其基本控制項相同的功能。其中一項功能是在設計時透過拖曳標題來調整列大小的能力。但是,預設情況下,自訂控制項不會繼承此行為。

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn