zoukankan      html  css  js  c++  java
  • 控件属性、事件持久化(转)

    1. 我们知道,在VS2003中,自定义控件要得到Intellisense的支持,必须手工编写(后来也有人写了生成工具)Schema,但是在VS2005中,Schema是由IDE自动生成的,就是说,你可以自动获得所有public属性和事件的Intellisence。
    2. 如果,public的属性不需要在Intellisence得到支持,而只在后台代码中使用,则可以为属性应用[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]标签(但是如果属性同时应用了[Bindable(true)],则属性仍在SourceView中获得智能感知)。
    3. 如果属性应用了[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)],则属性类型的信息也会映射到Schema中,比如Style属性,属性类型的子属性也会得到智能感知的支持。
    4. BindableAttribute决定属性和事件是否显示在属性窗口中。
    5. PersistenceMode决定持久化属性的方式,默认为[PersistenceMode(PersistenceMode.Attribute)],表示持久化属性为主标签的属性,如果属性包含子属性,则子属性持久化成破折号连接的样式,比如Font的子属性,Font-Name代表Font.Name子属性;
    6. [PersistenceMode(PersistenceMode.InnerProperty)]表示用嵌套标签表示复杂属性,比如DataList的ItemStyle属性,就使用嵌套的子标签的形式来持久化。
    7. [PersistenceMode(PersistenceMode.InnerDefaultProperty)]与[PersistenceMode(PersistenceMode.InnerProperty)]的区别在于,主标签中的内容分析成此Attribute装饰的Property,比如,上例中的ItemStyle的值需要序列化在一对<ItemStyle></ItemStyle>标签中,而InnerDefaultProperty的属性则可省掉表示属性名的标签对,InnerDefaultProperty在一个类中只能应用一次。
    8. [PersistenceMode(PersistenceMode.EncodedInnerDefaultProperty)]和InnerDefaultProperty不同的是,它会对内容进行HTML Encoding,比如把<div>变成&lt;div&gt;,就是说它的里面将不允许存在子控件和HTML标签。比如TextBox.Text。
    9. ParseChildrenAttribute决定标签对中的内容是其它的子控件还是嵌套标签表示的属性。
    10. [ParseChildren(false)]表示把内容分析成子控件或HTML标签(和关联的ControlBuilder协同工作)。
    11. [ParseChildren(true)]表示把内容分析成属性,比如DataList中的<ItemStype>等内容。
    12. ParseChildren属性也可以指定默认属性,比如DropDownList使用[ParseChildren(true, "Items") ]将它的内容默认分析为Items属性的值(DropDownList控件同时在Items属性上装饰了[PersistenceMode(PersistenceMode.InnerDefaultProperty)])。
    13. 如果内容中的标签不能分析成控件类型,则会分析成属性。
    14. [PersistChildren]用来装饰一个类,决定这个类把内容分析成控件的子控件,还是控件的元素。[PersistChildren(false,true)]后一个true表示使用自定义的持久化,意味着Schema生成器将不生成也不验证这种控件的内容,比如Xml控件使用内容表示它的xml文档。
    15. [ToolboxItem(false)]意味着控件不会显示在工具箱中,它也不是能独立显示自己内容的控件。比如TableRow,TableCell。
    16. 对于Color和枚举类型,Intellisence会自动提供Picker,对于表示Url的string类型属性,可以对它们应用[UrlProperty]

      原文链接>>
  • 相关阅读:
    .net 中 数据库的查询参数写法。微软其他开发环境同理
    【开源】女人值钱计算器,C++
    远程桌面的端口修改
    .net 中使用ActiveX控件的自动创建的包装器的问题(自动生成的Interop.Ax*Lib.dll)
    ASP.NET站点的同时部署给不同的客户。通过数据库配置站点的Top、版权、站点名称
    当下常见的十大(现在补充了,是十一大手机操作系统)手机(平板)操作系统
    项目外包,类似QQ这样界面的客户端,要求界面漂亮,功能是帮助客户完成在线业务的功能。
    stdoled.dll 的问题
    dotnet调用外部dll中,参数数据类型的问题
    前两天用VC6做的修改远程桌面端口的命令行小程序,源码。
  • 原文地址:https://www.cnblogs.com/easyleo/p/3177344.html
Copyright © 2011-2022 走看看