ASP.NET自定義控件入門Demo


最近看了MSDN關於自定義控件的介紹,根據官方的文檔,自己學着做了一個簡單的Demo給需要的朋友參考。

ASP.NET 源生的TextBox是不帶Label標簽的,這里我要實現的是創建一個帶Label標簽的TextBox,並且默認填充Text值為GUID(只讀) 

實際上現在很多第三方組件都有這種控件,如Ext.Net,FineUI等等。這里只是為了學習了解自定義控件的開發。

 

步入正題

1.在VS2010中創建一個類庫項目,我選擇的框架是3.5。名稱“MyTextBoxControl”

2.然后新建一個類文件,名稱“MyTextBoxControl.cs”

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.ComponentModel;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Security.Permissions;
namespace MyTextBoxControl
{
    [
    AspNetHostingPermission(SecurityAction.Demand,
        Level = AspNetHostingPermissionLevel.Minimal),
    AspNetHostingPermission(SecurityAction.InheritanceDemand,
        Level = AspNetHostingPermissionLevel.Minimal),
    DefaultProperty("Text"),
    ToolboxData("<{0}:MyTextBoxControl runat=\"server\"> </{0}:MyTextBoxControl>")
    ]
    public class MyTextBoxControl : TextBox//繼承源生TextBox
    {
        /// <summary>
        /// 為TextBox擴展的Label標簽
        /// </summary>
        [
        Bindable(true),
        Category("Appearance"),
        DefaultValue("Label1:"),
        Description("The control content text."),
        Localizable(true)
        ]
        
        public virtual string Label
        {
            get
            {
                string s = (string)ViewState["Label"];
                return (s == null) ? "Label1:" : s;//如果控件Label為空,默認值為"Label1"
            }
            set
            {
                ViewState["Label"] = value;
            }
        }

        /// <summary>
        /// 重繪控件
        /// </summary>
        /// <param name="writer"></param>
        protected override void Render(System.Web.UI.HtmlTextWriter writer)
        {
            System.Web.UI.WebControls.Label lable = new Label();
            lable.ID = "Label1";
            lable.Text = this.Label;//設置標簽文本
            lable.Font.Bold = true;//設置文本顯示為粗體
            lable.RenderControl(writer);//將Label輸出到控件中
            this.Width = Unit.Pixel(255);//設置默認寬度
            this.Text = Guid.NewGuid().ToString("N").ToUpper();//默認文本,設置默認Text值
            this.ReadOnly = true;//設置Text默認只讀
            base.Render(writer);//輸出控件
        }

    }
}

編譯項目,會在Debug目錄下生成MyTextBoxControl.dll文件

3.新建一個網站項目測試自定義控件,項目名稱“TestControl”先引用剛才的控件

在VS2010菜單上選擇“工具”》“選擇工具箱”選擇MyTextBoxControl.dll所在目錄,確定

然后在VS2010的工具欄上會出現剛才添加的控件了

接着大家就可以像其他控件一樣拖動使用了,請看下面的截圖

這里Label屬性默認為空,我們可以設置成其他值。最后上一張運行圖

我這個Demo做的比較簡單,只是入門。更復雜的官方文檔有很詳細的介紹 有興趣的朋友可以多研究下http://msdn.microsoft.com/zh-cn/library/bb386519(v=vs.90).aspx

Demo下載


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM