ControlDesigner類別的屬性、函式、事件

本文详细介绍了RAD開發工具中的ControlDesigner物件,包括其在視覺效果、事件通知及控件能力方面的作用,并阐述了如何通过不同的方法实现控件的设计时期显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     ControlDesigner物件負責RAD開發工具最重要的部分:視覺效果及控件於Designer事件發生時的反應,當控件被拖放至Designer上時,ControlDesigner物件的GetDesignTimeHtml函式會被觸發,Designer將此函式所傳回的HTML程式碼顯示於畫面上,預設的ControlDesigner.GetDesignTimeHtml函式的行為是先建立指定的控件,而后呼叫其RenderControl函式來取得設計時期的HTML程式碼。縱然Designer盡可能的實作瀏覽器的所有功能,但是Designer畢竟不是一個全功能的瀏覽器,有時瀏覽器而顯示的HTML程式碼在Designer上就是怪模怪樣的,這時設計者必須提供ControlDesigner物件來解決這個問題。ControlDesigner物件的功能大體上可分為三個部分:視覺,事件,能力。視覺指的是控件在Designer上的顯示,事件則是當Designer處理控件拖放或是屬性、事件變更時所發出的事件通知,能力指的是控件是否允許重定義大小、屬性表的顯示及DataBinding功能。

1.視覺:

GetDesignTimeHtml:傳回設計時期的HTML程式碼。

UpdateDesignTimeHtml:當屬性變動時被呼叫,預設情況下此函式會呼叫GetDesignTimeHtml函式重新取得HTML程式碼來更新控件的外觀。

GetEmptyDesignTimeHtml:當GetDesignTimeHtml函式無法取得HTML程式碼時被呼叫,預設的ControlDesigner.GetDesignTimeHtml函式來取得HTML程式碼,假設該控件無法提供設計時期的HTML,那么此函式會被呼叫,預設是以[Site.Name + Control Name]顯示。

GetErrorDesignTimeHtml:當GetDesignTimeHtml函式發生例外時被呼叫,倘若此函式仍傳回空字串,GetEmptyDesignTimeHtml函式會被呼叫。

CreatePlaceHolderDesignTimeHtml:傳回一個預設的Place Holder HTML,簡單的說就是<table>…..</table>,用來顯示一些資訊,例如當控件依賴使用者設定Template來顯示,但是使用者并未設定任何Template時,可於GetEmptyDesignTimeHtml呼叫此函式并傳入提示訊息,令其顯示於Designer之上。

2.事件通知:

DoDefaultAction:當使用者在控件上面按兩下滑鼠鍵時呼叫,一般此處是產生預設事件的處理函式,如Button.Click事件處理函式。

OnComponentChanged:屬性或事件變動時呼叫。

OnSetComponentDefaults:設定控件屬性的預設值時呼叫,通常發生於控件初建立時。

OnSetParent:當控件成為某個控件的子控件時呼叫。

OnControlResize:當控件大小被改變時呼叫。

OnBehaviorAttached:當DesignerBehavior物件緊結至ControlDesigner物件時呼叫。

OnbehaviorDateching:當Behavior物件被解除緊結時呼叫。

OnBindingsCollectionChanged:當DateBinding資訊改變時呼叫。

PreFilterProperties:當以TypeDescriptor物件取得屬性時被呼叫,用來過濾欲顯露於外的屬性。

PostFilterProperties:當以TypeDescriptor物件取得屬性時被呼叫,用來過濾欲顯露於外的屬性,此函式是在PreFilterProperties函式之后呼叫。

PreFilterAttributes:當以TypeDescriptor物件取得Attribute時被呼叫,用來過濾欲顯露於外的Attributes

PostFilterAttributes:當以TypeDescriptor物件取得Attribute時被呼叫,用來過濾欲顯露於外的Attributes,此函式是在PreFilterAttributes函式之后呼叫。

PreFilterEvents:當以TypeDescriptor物件取得事件時被呼叫,用來過濾欲顯露於外的事件。

PostFilterEvents:當以TypeDescriptor物件取得事件時被呼叫,用來過濾欲顯露於外的事件,此函式是在PreFilterEvents函式之后呼叫。

3.能力

AllowResize:控件是否允許改變大小。

DesignTimeHtmlRequestLoadComplete:當傳回true時,Designer在處理完所有控件時會再呼叫此ControlDesigner.UpdateDesignTimeHtml函式,此函式會呼叫GetDesignTimeHtml函式來更新控件的樣式,在Designer未處理完所有控件前,控件外觀不會有任何改變。

ShouldCodeSerialize:是否需要產生程式碼。

VerbsControlDesigner物件提供的選單項目,顯示於右鍵的清單中。

ReadOnly:是否唯讀,這會影響控件是否允許子控件的加入。

4.其它

Initialize:初始化ControlDesigner物件。

IsPropertyBound:某屬性是否已做了資料緊結(Data Bound)

GetPersistInnerHtml:當控件被放置於Designer上時呼叫,此函式必須負責將控件轉化為ASP.NET Tag寫入.aspx文件之中。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值