本文目的:
在自定义控件中添加一个枚举型的属性
什么是枚举型的属性?看一下下图就明白了。
上图是一个TextBox服务器控件的BorderStyle属性。在属性对话框中,该属性值是通过下拉列表框的形式出现的,我们只能选择下拉列表框中的选项,不能自己输入内容——这就是枚举型属性的特点。
接着上文《在VS2008中创建自定义控件(九)添加属性》,我们现在要为唐诗添加一个类别,这个类别用于说明唐诗是五言绝句还是七言绝句。
首先,还是打开“poetry.cs”文件。
然后,我们定义一个枚举,这个枚举中存放的内容就是下拉列表框中的选项,也就是五言绝句,还是七言绝句,如以下代码所示:
/// <summary> /// 枚举类型,用于显示诗的分类的具体选项 /// </summary> public enum PoetryTypes { 五言绝句, 七言绝句 }
第三步,定义一个枚举类型的属性,如以下代码所示。
private PoetryTypes _poetryTypes; /// <summary> /// 唐诗的分类 /// </summary> [Category("Data")] //放到“数据”分组中 [Browsable(true)] //该项属性是否会显示在控件的“属性”窗口中 [Description("诗的分类")] //属性的说明 public PoetryTypes PoetryType { get { return _poetryTypes; } set { _poetryTypes = value; } }
第四步,添加自定义控件的呈现方式,也就是重写RenderContents()方法,如以下代码所示。
/// <summary> /// 呈现控件 /// </summary> /// <param name="output"></param> protected override void RenderContents(HtmlTextWriter output) { string OutText = ""; if (!String.IsNullOrEmpty(Title)) { OutText += "<p style="/" mce_style="/""text-align:center; font-size:12pt; font-weight:bold;/">" + Title + "(" + PoetryType + ")</p>"; } OutText += "<p style="/" mce_style="/""text-align:center; font-size:10pt;/">" + Text + "</p>"; output.Write(OutText); }
经过以上四个步骤,自定义控件的一个枚举型属性就添加完毕了。我们可以在网页中添加这个自定义控件,此时,在属性窗口我们可以看到Type属性如下图所示。
从上图中我们可以看到,PoetryType属性值只能是我们定义的两个枚举选项。在aspx文件的源代码中,我们也可以看到枚举型属性的可选范围,如下图所示。
在上图中,如果我们不选择可选项,而是自己输入的内容,在编译的时候,VS将会提示错误信息,如下图所示。
最后的运行结果如下图所示。
===================================================================
原创不容易,转载请注明出处:http://hi.csdn.net/smallfools
相关链接:
===================================================================
本例的源代码可以在http://download.csdn.net/source/3266670下载。