自定义控件(Task01)——可以设置属性的控件
源代碼:13033480群共享
上面的自定義控件屬性是不能設置的,一個鏈接控件,應該具有可以設置的最基本的鏈接屬性HyperLink和顯示的文本Text。
為了添加這兩個屬性,簡單一點地做,我們的類需要繼承自WebControl類。WebControl類已經是一個基本的控件類,它已經具備了一個控件最基本的結構,只是里面的內容還都是空的,我們要做的是,添加HyperLink和Text屬性,設置控件的標記A,添加控件的屬性href,添加要顯示的文本Text。
一、在類中添加可設置的屬性比較簡單:
1、HyperLink屬性
??????? public string HyperLink
??????? {
??????????? get
??????????? {
??????????????? return (string)ViewState["HyperLink"];
??????????? }
??????????? set
??????????? {
??????????????? if (value.IndexOf("http://") == -1)
??????????? ????{
??????????????????? throw new ApplicationException("Specify HTTP as the protocol.");
??????????????? }
??????????????? else
??????????????? {
??????????????????? ViewState["HyperLink"] =value;
??????????????? }
??????????? }
??????? }
2、Text屬性
???? ???public string Text
??????? {
??????????? get
??????????? {
??????????????? return (string)ViewState["Text"];
??????????? }
?
??????????? set
??????????? {
??????????????? ViewState["Text"] =value;
??????????? }
??????? }
二、設置控件的標記A
這個,只需要把參數A,傳遞給基類WebControl的構建函數就可以了
public LinkWebControl(): base(HtmlTextWriterTag.A)
三、添加控件的屬性href
設置好HyperLink屬性和Text屬性后,需要把這兩個屬性在呈現之前添加到HtmlTextWriter類變量output中,代碼如下:
??????? protected override void AddAttributesToRender(HtmlTextWriter output)
??????? {
??????????? output.AddAttribute(HtmlTextWriterAttribute.Href, HyperLink);
??????????? base.AddAttributesToRender(output);
??????? }
四、同樣道理,要顯示的文本Text的內容,需要在呈現前來內容之前呈現出來,因為WebControl呈現的文本為空,所以,放在呈現內容之后也可以的:
??????? protected override void RenderContents(HtmlTextWriter output)
??????? {
??????????? output.Write(Text);
??????????? base.RenderContents(output);?// Calls RenderChildren()
??????? }
五、HyperLink和Text屬性,如果沒有設置,控件需要有的默認的屬性,這兩個屬性設置可以Renter()之前的Onitial函數中:
??????? protected override void OnInit(EventArgs e)
??????? {
?? ?????????Page.RegisterRequiresViewStateEncryption();
??????????? base.OnInit(e);
??????????? if (ViewState["HyperLink"] ==null)
??????????? {
??????????????? ViewState["HyperLink"] ="http://www.jsfsc.edu.cn";
??????????? }
?
??????????? if (ViewState["Text"] ==null)
??????????? {
??????????????? ViewState["Text"] ="江蘇食品職業技術學院";
??????????? }
??????? }
六、在窗體中使用自定義控件方法和前面是一樣的:
1、添加引用。
2、注冊
<%@ Register TagPrefix="apress"Namespace="CustomServerControlsLibrary"Assembly="CustomServerControlsLibrary"%>
3、添加控件
??????? <div>
??????????? <spxy:LinkWebControlID="LinkWebControl1"runat="server"BackColor="#00FF00"Font-Names="Verdana"
??????????????? Font-Size="Large"ForeColor="#FF0000">
??????????? </spxy:LinkWebControl>
??????? </div>
七、在瀏覽器是查看效果。
〖遺留問題〗
1、? 這個簡單的自定義控件,繼承Object類應該也能做。
2、WebControl類,已經具有了一些基本屬性,如BackColor、ForeColor、Font-Names、Font-Size等,需要進一步了解。轉載于:https://www.cnblogs.com/java20130723/archive/2012/04/24/3211650.html
總結
以上是生活随笔為你收集整理的自定义控件(Task01)——可以设置属性的控件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: arcsde9.3 the arcsd
- 下一篇: _visible