♣
控件修正,样式输不出,主要由于Render中MyBase.Render(output)你没写。(hackate确认)
对不起,我今天不能开msn,所以就不能发给你了,我只能在csdn上开一张贴,发给你。
控件我修正了一点,代码也给你简化了一些,一般做控件你的代码可以了,不过如果你还要加子控件的话,你可以在createchildcontrol中加入你要的控件。
在render中要加一个me。ensurechildcontrol(),这句话是判断是不是创件了子控件,如果没有的话,它会到createchildcontrol这个sub中执行
记住有的控件还要加builder和design
其他的要你自己摸索,不过你可以看看我的blog上的那些控件,那写比较的经典。
定时刷新页面控件(hackate),修正后的代码:
imports system.web.ui
imports system.web.ui.webcontrols
imports system.collections
imports system.text
imports system.componentmodel
imports microsoft.visualbasic
<defaultproperty("text"), defaultevent("timer"), toolboxdata("<{0}:settimeoutcontrol runat=server></{0}:settimeoutcontrol>")> public class settimeoutcontrol
inherits system.web.ui.webcontrols.webcontrol
implements ipostbackeventhandler
private shared eventtimer as object = new object
public event timer as eventhandler
#region "property"
public overrides property visible() as boolean
get
return mybase.visible
end get
set(byval value as boolean)
mybase.visible = value
end set
end property
public overrides property width() as system.web.ui.webcontrols.unit
get
return mybase.width
end get
set(byval value as system.web.ui.webcontrols.unit)
mybase.width = value
end set
end property
public overrides property height() as system.web.ui.webcontrols.unit
get
return mybase.height
end get
set(byval value as system.web.ui.webcontrols.unit)
mybase.height = value
end set
end property
<defaultvalue(3000), bindable(false), description("duration millisecound")> public property interval() as integer
get
return viewstate("_interval")
end get
set(byval value as integer)
viewstate("_interval") = value
end set
end property
<defaultvalue(false), bindable(false), description("enabled timer")> public overrides property enabled() as boolean
get
return mybase.enabled
end get
set(byval value as boolean)
mybase.enabled = value
end set
end property
#end region
protected overridable sub ontimer(byval e as eventargs)
raiseevent timer(me, e)
end sub
public sub raisepostbackevent(byval eventargument as string) implements system.web.ui.ipostbackeventhandler.raisepostbackevent
if eventargument = "ontimer" then
ontimer(eventargs.empty)
end if
end sub
private function bulidjavascript() as string
dim sb as stringbuilder = new stringbuilder
sb.append(chr(10) & "<script language=javascript>")
sb.append(chr(10) & " settimeout(""" & me.page.getpostbackeventreference(me, "ontimer") & """," & viewstate("_interval").tostring & ");")
sb.append(chr(10) & "</script>")
return sb.tostring
end function
protected overrides sub render(byval output as system.web.ui.htmltextwriter)
me.ensurechildcontrols()
if mybase.enabled = true then
output.write(bulidjavascript)
mybase.render(output)
end if
end sub
public sub new()
mybase.height = system.web.ui.webcontrols.unit.pixel(10)
mybase.width = system.web.ui.webcontrols.unit.pixel(120)
me.interval = 3000
end sub
end class
· 网友精彩回答:
继承control这个基类是没有ui支持的,是不是这个原因导致的呢?
那么用webcontrol是可以达到效果。然后用了webcontrol基类后应该还可以重写onprerender方法。
这里为何要用viewstate取代呢?
- 更多问题:
- · 关于陆老师新书中FilterASFStreaming示例中的问题
- · MessageBox函数用不了!
- · 怎么实现一条宽带能同时几个人拨号? 怎么配置路由?
- · 关于Splitter这个winform控件的问题
- · 请教:如何让Showmessage/messagebox等的确定按钮变成英文?需要在英文操作系统中编译吗?
- · 本人准备了1000分,解决关于网络传输问题,希望高手们给予解答,谢谢!UP有分啊!!!!!!
- · 不是很清楚 帮忙看一下
- · 剖析女人的性格,请不要灌水,不要顶,欢迎大家踊跃发言
- · 我启用了几个timer,但在第一个timer调用没完成之前,第二个timer已到时间点,所以第二个timer没运行
- · 请教:如何实现symbian下面“开机自动运行“程序?100分的分数比较高吧。
- · 提取汉字
- · 我想得到网页显示的html源码,如何得到?
- · 请问,如何实现圆角矩形的编辑控件
- · 检查时间段重叠问题?
- · 求救呀,一个查询问题...
- · 请问这样能不能释放掉ado对象占用的内存,帮帮忙,斑竹!!!

