執行效果圖:
設計時的效果圖:
控制項的原理
很顯然控制項的最外層是標籤,內容部分是包在內部的乙個updownpanel的實現裡面的,通過控制div的display來實現效果的。大體的前台html結構:
測試例子
測試例子的內容
首先,確認updownpanel控制項不需要繼承某乙個控制項,但需要一些設計時的支援,如:邊框的顏色、高、寬,所以可以確定控制項繼承於webcontrol。控制項標籤的內容要解釋成子控制項,同時需要支援事件回傳來通知是否已經開啟,所以控制項還需要繼承ipostbackeventhandler。我們先來看控制項的屬性:
//////
標題///
public
string
title
set}
//////
距離左邊距離
///
public
unit pandingleft
set}
//////
距離上邊距離
///
public
unit pandingtop
set}
//////
是否開啟
///
[defaultvalue(
false
)]public
bool
isopen
set}
title屬性是表示標題,isopen屬性表示是否已經展開,屬性都很簡單。控制項的事件引數類:
//////
isopenchanged事件的引數
///
public
class
changedargs : eventargs
set}
public
changedargs(
bool
bopened)
}
事件回傳:出處:static
object
_isopenchanged
=new
object
();public
event
eventhandler
<
changedargs
>
isopenchanged
remove
}public
void
raisepostbackevent(
string
eventargument)}
控制項的呈現時候,首先需要重寫tagkey為"",同時要注意註冊事件回傳的指令碼,跟輸出自己的控制指令碼。這裡就不列出所有的呈現的**了,就看下關鍵的幾行**:
protected
override
void
rendercontents(htmltextwriter writer)
writer.addstyleattribute(htmltextwriterstyle.paddingtop,
this
.pandingtop.tostring());
writer.renderbegintag(htmltextwritertag.div);
//呈現子控制項
for(
inti =0
; i
<
this
.controls.count; i++)
writer.renderendtag();}
最後要注意的一點就是我們要讓控制項能夠在設計時支援,還需要自定義乙個controldesigner:
public
class
updownpaneldesigner : system.web.ui.design.containercontroldesigner}}
因為updownpanel控制項是容器控制項,所以我們繼承於containercontroldesigner,同時需要在控制項上標識:
[designer(
typeof
(updownpaneldesigner))]
public
class
updownpanle:webcontrol,ipostbackeventhandler
這下就可以使用了,只不過控制項還比較粗糙,在以後會逐步完善,還請大家批評,呵呵。
乙個簡單的日曆控制項
效果圖 var defaultdate new date var startyear,startmonth,startday 變數定義需要改一下,用default來定義當天的所有資訊 不能改變 var defaultmonth defaultdate.getmonth var defaultyear...
乙個css jq的日曆控制項
剛畢業,閒著的時候做了乙個日曆控制項,用css和jquery實現基本的日曆功能,包括年份和月份的翻頁,日期的選擇,根據輸入框的初始內容來初始化控制項,日期改變之後,也會更新該輸入框的內容。首先是css charset utf 8 css document x date date body date ...
乙個好看的時間控制項
1.依賴包 compile com.wx.wheelview wheelview 1.3.3 2.在布局中使用 60dp android layout height 60dp android orientation vertical wx.wheelview widget wheelview and...