实例说明
在用户制作财务报表时,有些文本框只能填写数值型数据,为了便于用户的正确填写,本实例制作了一个只限于输入数值型的文本框,并可以在输入数值时,限定输入的范围,以及对其进行四舍五入、取整等。实例运行结果如图1所示。
技术要点
设置自定义属性时,如果要将创建的属性放置在一个分类中并对其进行说明,可以用BrowsableAttribute类中的Browsable方法来控制当前添加的属性是否显示在“属性”对话框中,用CategoryAttribute类中的Category属性设置分类的别名,用DescriptionAttribute类中的Description属性设置当前属性的说明性文字。下面对自定义属性的设置进行详细说明。
首先在控件的“代码编辑”窗口中找到如下代码:
public partial class NumberBox : TextBox
{
public NumberBox()
{
InitializeComponent();
}
}
在public NumberBox代码段的下面添加自定义属性,代码如下:
private int TDecimalDigit = 2;
//在“属性”窗口中显示DecimalDigit属性
[Browsable(true), Category("数据文本框"), Description("保留的小数位数")]
public int DecimalDigit
{
get { return TDecimalDigit; }
set
{
TDecimalDigit = value;
//当属性值改变时,在这里进行相应的操作
}
}
在设置控件的属性时,属性的设置分为两种:
一种是C#自带类型的属性,如string、int、bool、Color、Font、DateSet等类型,它们的创建方式与DecimalDigit属性的创建方式相同,只要将该属性的int类型改为所需的类型即可;另一种是具有下拉列表框的属性,该列表框中的值是开发者自定义的。
下面对具有下拉列表属性的创建进行说明。
首先在public ChartPanel代码的下面定义一个枚举型变量,用于设置下拉列表的值。代码如下:
public enum Reserved
{
MinInt = 0, //保留最小整数
Round = 1, //四舍五入
MaxInt = 2, //保留最大整数
Tropism = 3, //小数取位(不进行舍入)
}
然后在该枚举型的下面设置一个具有Reserved值的下拉列表属性。代码如下:
private Reserved TReservedStyle = Reserved.Round;
//在“属性”窗口中显示ReservedStyle属性
[Browsable(true), Category("数据文本框"), Description("小数保留的类型")]
public Reserved ReservedStyle
{
get { return TReservedStyle; }
set
{
TReservedStyle = value;
~~//当属性值改变时,在这里进行相应的操作
}
}