當(dāng)你創(chuàng)建一個(gè)用戶自定義控件時(shí),可能要在其中加入一些屬性。這使得使用你的控件的人可以對(duì)該控件進(jìn)行自定義,或者從該控件中取得一些值。只讀屬性是你可以創(chuàng)建的屬性的一種。這種類型的屬性只能允許使用該控件的人員從該控件中獲取屬性值,而不能對(duì)這種類型的屬性進(jìn)行設(shè)置。通過(guò)一個(gè)屬性返回當(dāng)前系統(tǒng)日期是只讀屬性的一種典型應(yīng)用;蛘呷绻谀愕淖远x控件中有一個(gè)返回當(dāng)前版本的屬性的話,最好將其作為只讀屬性。
下面的實(shí)例中所提供的用戶自定義控件,當(dāng)在一個(gè)asp.net頁(yè)面上定義的時(shí)候,將顯示一些控件,訪問(wèn)者可以使用這些控件來(lái)輸入其姓名和密碼。本控件提供了三個(gè)只讀屬性,分別返回在textbox中輸入的數(shù)據(jù)和本控件的版本信息。
在這個(gè)用戶自定義控件文件中,定義了二個(gè)textbox控件。第一個(gè)textbox控件用來(lái)輸入訪問(wèn)者的姓名:
<asp:textbox
id=”txtusername”
runat=”server’
/>
第二個(gè)textbox控件允許訪問(wèn)者在其中輸入密碼:
<asp:textbox
id=”txtpassword”
runat=”server”
textmode=”password”
/>
下面是一段代碼,當(dāng)頁(yè)面首次載入時(shí)會(huì)自動(dòng)運(yùn)行:
sub page_load(s as object, e as eventargs)
if not ispostback then
txtusername = “Your name Here”
end if
end sub
這段代碼只是實(shí)現(xiàn)了將默認(rèn)文本放在第一個(gè)textbox控件中的功能。要注意的是這段代碼只能從這個(gè)用戶自定義控件運(yùn)行。這是因?yàn),定義用戶自定義控件的這個(gè)頁(yè)面并產(chǎn)不能直接對(duì)這個(gè)控件中的底層進(jìn)行訪問(wèn),而是通過(guò)你自己的那些屬性來(lái)對(duì)底層的控件進(jìn)行訪問(wèn)。
本控件提供了三個(gè)屬性,所有的這三個(gè)屬性都是只讀的。第一個(gè)屬性稱作username(用戶名),并返回一個(gè)字符串:
public readonly property username() as string
get
username = txtusername.text
end get
end property
這個(gè)屬性返回在第一個(gè)textbox中輸入的文本。
第二個(gè)屬性將返回textpassword中的那個(gè)textbox控件中輸入的密碼:
public readonly property password() as string
get
password = txtpassword.text
end get
end property
第三個(gè)屬性為version,返回這個(gè)自定義控件的版本號(hào):
public readonly property version() as string
get
version = “1.0”
end get
end property
在保存了這個(gè)控件的定義文件后,就可以在一個(gè)asp.net頁(yè)面中定義一個(gè)這樣的用戶自定義控件了:
<my:logincontrol
id=”msc1”
runat=”server”
/>
<asp:button
id=”button”
text=”O(jiān)K!”
onclick=”button_click”
runat=”server”
/>
<asp:label
id=”lblmessage”
runat=”server”
/>
當(dāng)按下button控件時(shí),會(huì)觸發(fā)以下代碼:
sub button_click(s as object, e as eventargs)
lblmessage.text=”you entered:” & msc1.username &”---” & msc1.password & “<br>” &”this control version:” & msc1.version
end sub
如果你把這句代碼加在button_click子過(guò)程中,將會(huì)返回一個(gè)錯(cuò)誤:
msc1.username=”Lemongtree”
這是因?yàn)檫@個(gè)屬性是只讀的。
出處:
責(zé)任編輯:幻想曲
上一頁(yè) 向自定義控件中添加控件 下一頁(yè) 在用戶控件中創(chuàng)建一個(gè)只寫(xiě)的屬性
◎進(jìn)入論壇網(wǎng)絡(luò)編程版塊參加討論
|