生活随笔
收集整理的這篇文章主要介紹了
控件属性、事件持久化
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
我們知道,在VS2003中,自定義控件要得到Intellisense的支持,必須手工編寫(后來也有人寫了生成工具)Schema,但是在VS2005中,Schema是由IDE自動生成的,就是說,你可以自動獲得所有public屬性和事件的Intellisence。 如果,public的屬性不需要在Intellisence得到支持,而只在后臺代碼中使用,則可以為屬性應用[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]標簽(但是如果屬性同時應用了[Bindable(true)],則屬性仍在SourceView中獲得智能感知)。 如果屬性應用了[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)],則屬性類型的信息也會映射到Schema中,比如Style屬性,屬性類型的子屬性也會得到智能感知的支持。 BindableAttribute決定屬性和事件是否顯示在屬性窗口中。 PersistenceMode決定持久化屬性的方式,默認為[PersistenceMode(PersistenceMode.Attribute)],表示持久化屬性為主標簽的屬性,如果屬性包含子屬性,則子屬性持久化成破折號連接的樣式,比如Font的子屬性,Font-Name代表Font.Name子屬性; [PersistenceMode(PersistenceMode.InnerProperty)]表示用嵌套標簽表示復雜屬性,比如DataList的ItemStyle屬性,就使用嵌套的子標簽的形式來持久化。 [PersistenceMode(PersistenceMode.InnerDefaultProperty)]與[PersistenceMode(PersistenceMode.InnerProperty)]的區別在于,主標簽中的內容分析成此Attribute裝飾的Property,比如,上例中的ItemStyle的值需要序列化在一對<ItemStyle></ItemStyle>標簽中,而InnerDefaultProperty的屬性則可省掉表示屬性名的標簽對,InnerDefaultProperty在一個類中只能應用一次。 [PersistenceMode(PersistenceMode.EncodedInnerDefaultProperty)]和InnerDefaultProperty不同的是,它會對內容進行HTML Encoding,比如把<div>變成<div>,就是說它的里面將不允許存在子控件和HTML標簽。比如TextBox.Text。 ParseChildrenAttribute決定標簽對中的內容是其它的子控件還是嵌套標簽表示的屬性。 [ParseChildren(false)]表示把內容分析成子控件或HTML標簽(和關聯的ControlBuilder協同工作)。 [ParseChildren(true)]表示把內容分析成屬性,比如DataList中的<ItemStype>等內容。 ParseChildren屬性也可以指定默認屬性,比如DropDownList使用[ParseChildren(true, "Items") ]將它的內容默認分析為Items屬性的值(DropDownList控件同時在Items屬性上裝飾了[PersistenceMode(PersistenceMode.InnerDefaultProperty)])。 如果內容中的標簽不能分析成控件類型,則會分析成屬性。 [PersistChildren]用來裝飾一個類,決定這個類把內容分析成控件的子控件,還是控件的元素。[PersistChildren(false,true)]后一個true表示使用自定義的持久化,意味著Schema生成器將不生成也不驗證這種控件的內容,比如Xml控件使用內容表示它的xml文檔。 [ToolboxItem(false)]意味著控件不會顯示在工具箱中,它也不是能獨立顯示自己內容的控件。比如TableRow,TableCell。 對于Color和枚舉類型,Intellisence會自動提供Picker,對于表示Url的string類型屬性,可以對它們應用[UrlProperty]
轉載于:https://www.cnblogs.com/think/archive/2006/12/10/588341.html
總結
以上是生活随笔為你收集整理的控件属性、事件持久化的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。