在C# WinForms自定义控件中添加属性,可以使用PropertyDescriptor和TypeDescriptor类。
以下是一个示例:
using System.ComponentModel;
using System.Windows.Forms;
public class CustomControl : Control
{
private string customText;
[Browsable(true)] // 设置属性可见性
[Category("Custom")] // 设置属性分类
[Description("自定义文本属性")] // 设置属性描述
public string CustomText
{
get { return customText; }
set
{
customText = value;
Invalidate(); // 使控件无效,以便重新绘制
}
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
// 在绘制控件时使用CustomText属性
e.Graphics.DrawString(CustomText, Font, Brushes.Black, ClientRectangle);
}
}
在示例中,创建了一个名为CustomControl的自定义控件,并添加了一个名为CustomText的属性。使用[Browsable(true)]属性设置属性可见性,使用[Category("Custom")]属性设置属性分类,使用[Description("自定义文本属性")]属性设置属性描述。
在CustomText属性的set访问器中,我们将属性的值存储在customText字段中,并调用Invalidate()方法使控件无效,以便重新绘制。
在OnPaint方法中,我们使用CustomText属性的值来绘制控件。
这样自定义控件添加的属性在编程工具的属性窗口是可见的,修改属性值与系统控件的属性操作一样。