簡體   English   中英

如何創建更新設計器的.NET Winforms自定義控件?

[英]How do you create a .NET winforms custom control that updates the designer?

我已經創建了一個這樣的自定義用戶控件(簡單的示例):

public class MyButton : Button
{
    public MyButton()
    {
        BackColor = Color.Blue;
    }
}

編譯后,它會顯示在表單設計器工具箱中,並顯示帶有更新的屬性。 但是,如果我更改顏色,則我已經在窗體上使用的控件將保留其原始顏色。

有沒有一種方法可以設計控件,以將其更改傳達給設計者?

問題在於,在編輯類之前在窗體上放置的按鈕已經由窗體的InitializeComponent()調用以不同的顏色進行了初始化。 換句話說,它們會覆蓋您在構造函數中設置的默認顏色。 您需要做的是聲明該屬性的默認值,以便設計人員不會生成分配。 看起來應該像這樣:

using System;
using System.Drawing;
using System.ComponentModel;
using System.Windows.Forms;

class MyButton : Button {
    public MyButton() {
        BackColor = Color.Blue;
    }
    [DefaultValue(typeof(Color), "Blue")]
    public override Color BackColor {
        get { return base.BackColor; }
        set { base.BackColor = value; }
    }
}

我不知道這是否可行,但是我確實知道,當您在設計器上拖動控件時,將執行其構造函數。 這就是為什么您的按鈕一開始將為藍色,之后不會更改顏色的原因。

您在BackColor屬性的構造函數中設置默認值,而在啟動設計器時,它實際上是從構造函數設置默認值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM