首頁 > 後端開發 > C++ > 如何為自訂 Windows 窗體控制項中嵌入的控制項啟用設計時支援?

如何為自訂 Windows 窗體控制項中嵌入的控制項啟用設計時支援?

Barbara Streisand
發布: 2025-01-05 14:48:41
原創
330 人瀏覽過

How Can I Enable Design-Time Support for Controls Embedded within Custom Windows Forms Controls?

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

在Windows 窗體開發領域,自訂控制項通常缺乏與預設控制項相同的設計功能當嵌入其中時。當無法在設計模式下存取自訂清單檢視中的列大小調整等功能時,這可能會特別令人沮喪。但是,透過建立自訂設計器,可以克服此限制。

UserControls 的預設設計器 ControlDesigner 缺乏與所包含控制項互動的必要功能。為了修正這個問題,我們可以建立一個繼承自 ControlDesigner 的自訂設計器,並專門為自訂控制項中的所需控制項啟用設計支援。

要實現此目的,請按照下列步驟操作:

  1. 向自訂控制項新增一個公共屬性,以公開底層控制項,在本例中為 ListView。
  2. 套用 DesignerSerializationVisibility屬性到公用屬性,以允許在設計變更時儲存控制項的屬性。
  3. 將 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");
        }
    }
}
登入後複製

透過建立自訂設計器,我們可以擴展自訂控制項的設計功能,啟用諸如調整列大小之類別的功能嵌入到UserControls 中時的ListView 控制項。

以上是如何為自訂 Windows 窗體控制項中嵌入的控制項啟用設計時支援?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板