[英]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.