开发自定义控件的笔记 (2)
生活随笔
收集整理的這篇文章主要介紹了
开发自定义控件的笔记 (2)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
復(fù)合控件...
1、什么是復(fù)合控件?
復(fù)合控件是由多個(gè)控件組成的控件(廢話……),有點(diǎn)類似用戶控件(*.ascx),但是卻是用戶自定義控件的。
2、如何做
首先要從 System.Web.UI.WebControls.WebControl 繼承外,還有實(shí)現(xiàn)INamingContainer接口
{
}
?然后重寫CreateChildControls的方法
{}
在這里里面制作你想要添加的控件即可,比如添加幾個(gè)按鈕
Button but1 = new Button();
but1.Text = 'Button 1';
this.Controls.Add(but1);
Button but2 = new Button();
but2.Text = 'Button 2;
this.Controls.Add(but2);
這樣運(yùn)行之后就是有兩個(gè)按鈕的一個(gè)控件了。
這里我有個(gè)選擇checkbox的控件例子,給大家看一下,由于沒有進(jìn)行設(shè)計(jì)時(shí)的設(shè)計(jì),如果運(yùn)行的話,會(huì)是一個(gè)空白的點(diǎn),不過不影響使用, 如果干興趣的話,可以按照我上一篇《開發(fā)自定義控件的筆記(1) 》介紹的方法加上設(shè)計(jì)時(shí)的外觀
代碼如下:
using?System;
using?System.Web.UI;
using?System.Web.UI.WebControls;
using?System.ComponentModel;
using?System.Drawing;
using?System.Drawing.Drawing2D;
namespace?myControls.SelectButton
{
????/**////?<summary>
????///?WebCustomControl1?的摘要說明。
????///?</summary>
????[DefaultProperty("Text"),
????????ToolboxData("<{0}:SelectButton1?runat=server></{0}:SelectButton1>")]
????public?class?SelectButton1:?System.Web.UI.WebControls.WebControl,INamingContainer
????{
????????private?string?_select?=?"選擇全部";
????????private?string?_cancel?=?"取消選擇";
????????private?string?_invert?=?"反向選擇";
????????[Bindable(false),
????????Category("Appearance"),
????????DefaultValue("")]
????????public?string?SelectText
????????{
????????????get
????????????{
????????????????return?_select;
????????????}
????????????set
????????????{
????????????????_select?=?value;
????????????}
????????}
????????public?string?CancelText
????????{
????????????get{
????????????????return?_cancel;
????????????}
????????????set{
????????????????_cancel?=?value;
????????????}
????????}
????????public?string?InvertText
????????{
????????????get{
????????????????return?_invert;
????????????}
????????????set{
????????????????_invert?=?value;
????????????}
????????????
????????}
????????*/
????????/**////?<summary>
????????///?重寫OnPreRender方法。
????????///?</summary>
????????///?<param?name="e"></param>
????????protected?override?void?OnPreRender(EventArgs?e)?
????????{
????????????//Page.RegisterPostBackScript();
????????????string?tempstr?=?"";
????????????tempstr?+="<script?language=\"javascript\">";
????????????tempstr?+="????function?SelectAll(){";
????????????tempstr?+="????????var?obj?=?document.getElementsByTagName(\"input\");";
????????????tempstr?+="????????for(i=0;i<obj.length;i++){";
????????????tempstr?+="????????????if(obj[i].type==\"checkbox\"){";
????????????tempstr?+="????????????????obj[i].checked?=?true;";
????????????tempstr?+="????????????}";
????????????tempstr?+="????????}";
????????????tempstr?+="????????window.event.returnValue=false;";
????????????tempstr?+="????}";
????????????tempstr?+="????function?CancelAll(){";
????????????tempstr?+="????????var?obj?=?document.getElementsByTagName(\"input\");";
????????????tempstr?+="????????for(i=0;i<obj.length;i++){";
????????????tempstr?+="????????????if(obj[i].type==\"checkbox\"){";
????????????tempstr?+="????????????????obj[i].checked?=?false;";
????????????tempstr?+="????????????}";
????????????tempstr?+="????????}";
????????????tempstr?+="????????window.event.returnValue=false;";
????????????tempstr?+="????}";
????????????tempstr?+="????function?InvertAll(){";
????????????tempstr?+="????????var?obj?=?document.getElementsByTagName(\"input\");";
????????????tempstr?+="????????for(i=0;i<obj.length;i++){";
????????????tempstr?+="????????????if(obj[i].type==\"checkbox\"){";
????????????tempstr?+="????????????????if(obj[i].checked){";
????????????tempstr?+="????????????????????obj[i].checked?=?false;";
????????????tempstr?+="????????????????}else{";
????????????tempstr?+="????????????????????obj[i].checked?=?true;";
????????????tempstr?+="????????????????}";
????????????tempstr?+="????????????}";
????????????tempstr?+="????????}";
????????????tempstr?+="????????window.event.returnValue=false;";
????????????tempstr?+="????}";
????????????tempstr?+="</script>";
????????????if(!Page.IsStartupScriptRegistered("SelectBtnFunction"))
????????????{
????????????????Page.RegisterStartupScript("SelectBtnFunction",tempstr);
????????????}
????????}
????????/**////?<summary>
????????///?重寫創(chuàng)建子控件的方法
????????///?</summary>
????????protected?override?void?CreateChildControls()
????????{
????????????this.Controls.Add(new?LiteralControl("<table><tr><td>"));
????????????Button?but1?=?new?Button();
????????????but1.Text?=?this.SelectText;
????????????but1.Attributes.Add("onclick","javascript:SelectAll()");
????????????this.Controls.Add(but1);
????????????this.Controls.Add(new?LiteralControl("</td><td>"));
????????????Button?but2?=?new?Button();
????????????but2.Text?=?this.CancelText;
????????????but2.Attributes.Add("onclick","javascript:CancelAll()");
????????????this.Controls.Add(but2);
????????????this.Controls.Add(new?LiteralControl("</td><td>"));
????????????Button?but3?=?new?Button();
????????????but3.Text?=?this.InvertText;
????????????but3.Attributes.Add("onclick","javascript:InvertAll()");
????????????this.Controls.Add(but3);
????????????this.Controls.Add(new?LiteralControl("</td></tr></table>"));
????????}
????}
}
http://files.cnblogs.com/voodooq/SelectButton.rar?完整代碼下載 (嘿嘿,留到最后……)
轉(zhuǎn)載于:https://www.cnblogs.com/voodooq/archive/2004/12/16/77661.html
總結(jié)
以上是生活随笔為你收集整理的开发自定义控件的笔记 (2)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用SPEncode.HtmlEncod
- 下一篇: WebLogic Platform 8.