• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

asp.net控件开发基础(10)--------再谈属性,实现自定义控件集合属性 ...

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
         上一篇讨论了类型转换器的使用,这次继续讨论讨论集合属性的使用

集合属性相信大家都很熟悉也很常用,如DropDownList,ListBox等控件

<asp:DropDownList ID="DropDownList1" runat="server">
            
<asp:ListItem>测试1</asp:ListItem>
            
<asp:ListItem>测试2</asp:ListItem>
            
<asp:ListItem>测试3</asp:ListItem>
        
</asp:DropDownList>


1.实现集合属性效果

经过前面几篇的学习,相信这一篇看起来已经相对简单了.我们要做的就是,先定义一个复杂属性,然后用迭代语句获取数组数据即可.

如果看过前面几篇就看看下面代码吧,相信看起来很简单,我们模仿一个DropDownList,为其属性添加背景属性,代码如下

先定义一个集合属性,如下

 public class DropItem
    }


 然后自定义一个控件,输出集合属性,如下代码

 [ParseChildren(true"DropItemList")]
   
public class DropColor:WebControl
    }


上面代码注意颜色类型之间的转换,以下为HTML代码

<custom:DropColor ID="DropColor1" runat="server" ForeColor="White">
        
<custom:DropItem BackColor="Yellow" Text="黄色" Value="yellow" />
        
<custom:DropItem BackColor="Red" Text="红色" Value="red" />
        
<custom:DropItem BackColor="Blue" Text="蓝色" Value="blue" />
        
<custom:DropItem BackColor="Green" Text="绿色" Value="green" />
        
<custom:DropItem BackColor="Black" Text="黑色" Value="Black" />
        
</custom:DropColor>


输出以后的效果如下图




效果还不错吧,而且挺实用的.

2.定义编辑器

大家一般在添加集合属性的时候往往会在.net自带的编辑器中添加数据,这样可以提高效果,不用在HTML视图添加数据.如下图




我们也可以为其添加自定义的编辑器,其实我们一直在用.net自带的编辑器,我们称之为 UI编辑器或视图编辑器,如颜色,时间,超级链接等,大家该有所体会

其编辑器的基类为位于System.Drawing.Design命名空间的UITypeEditor,很多UI编辑器都从此类派生,有兴趣的可以去了解下这个类.

你们如何使用使用UI编辑器呢?也跟上一篇讲的类型转换器一样,你先要定义一个UI编辑器,然后与相关属性关联起来.

因为所定义的是一个集合类,而.net已经为我们提供了一个集合编辑器的CollectionEditor类,其已经为我们做了很多工作了,我们最简单的只需重写几个方法即可.具体其他属性和方法请参考MSDN,如下代码

    public class DropItemEditor : CollectionEditor
    }


然后把集合属性与编辑器关联起来,添加了一个EditorAttribute,第一个参数为指定的编辑器类型,第二个为基本类型

        [
        Category(
"Behavior"),
        Description(
"项集合"),
        DesignerSerializationVisibility(
            DesignerSerializationVisibility.Content),
        PersistenceMode(PersistenceMode.InnerDefaultProperty),
        Editor(
typeof(DropItemEditor), typeof(UITypeEditor)),
        ]
       
//定义集合属性
       public ArrayList DropItemList


然后再来看下效果,这样就方面很多了.



如果还不想看到编辑器里的CustomComponents的命名空间的话,你可以像上一篇一样自定义一个类型转换器,代码如下:

    }


然后还是照着步骤把属性与其关联起来

  [TypeConverter(typeof(DropItemConverter))]
    
public class DropItem
    }


再来看下效果




好了,这回讲的比较简单又实用,希望对大家有帮助.大家同时也可以参考MSDN里的例子,下面的示例代码下载我也加上了MSDN的例子.
已经写了10篇了,我们应该有些基础了,我想大家该可以做出一些简单实用的控件了.

示例代码下载

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
asp.net多线程在web页面中简单使用发布时间:2022-07-10
下一篇:
asp.netcore处理中文的指南发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap