日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

开发自定义控件的笔记 (2)

發布時間:2024/4/17 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 开发自定义控件的笔记 (2) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

復合控件...


1、什么是復合控件?
復合控件是由多個控件組成的控件(廢話……),有點類似用戶控件(*.ascx),但是卻是用戶自定義控件的。

2、如何做
首先要從 System.Web.UI.WebControls.WebControl 繼承外,還有實現INamingContainer接口

public?class?SelectButton:?System.Web.UI.WebControls.WebControl,INamingContainer
{
}


?然后重寫CreateChildControls的方法

protected?override?void?CreateChildControls()
{}
在這里里面制作你想要添加的控件即可,比如添加幾個按鈕
Button but1 = new Button();
but1.Text = 'Button 1';
this.Controls.Add(but1);

Button but2 = new Button();
but2.Text = 'Button 2;
this.Controls.Add(but2);

這樣運行之后就是有兩個按鈕的一個控件了。

這里我有個選擇checkbox的控件例子,給大家看一下,由于沒有進行設計時的設計,如果運行的話,會是一個空白的點,不過不影響使用, 如果干興趣的話,可以按照我上一篇《開發自定義控件的筆記(1) 》介紹的方法加上設計時的外觀

代碼如下:
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>
????????
///?重寫創建子控件的方法
????????
///?</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?完整代碼下載 (嘿嘿,留到最后……)

轉載于:https://www.cnblogs.com/voodooq/archive/2004/12/16/77661.html

總結

以上是生活随笔為你收集整理的开发自定义控件的笔记 (2)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。