最近正在学写自定义控件,不怕见笑,把自己的第一个简单的控件贴上来,顺便加上了几句注释,如果有理解不对或不明白的地方,欢迎留言!

using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;

namespace TestLib
{
    
/// <summary>
    
/// WebCustomControl1 的摘要说明。
    
/// </summary>

    [DefaultProperty("Text"),
        ToolboxData(
"<{0}:ConfirmButton runat=server></{0}:ConfirmButton>")]
    
//将WebCustomControl1 该为ConfirmButton
    
//这样使得aspx页面显示的该控件xml代码标识显示“<cc1:ConfirmButton …> …</cc1: ConfirmButton>”。

    
public class ConfirmButton : System.Web.UI.WebControls.Button//将System.Web.UI.WebControls.WebControl改为直接继承Button控件
    {
        
private string text;
        [Bindable(
true), 
        Category(
"Appearance"), 

        DefaultValue(
"")] 

        
public new  string Text//这里重新 new 了Text,(我尝试使用overrid 但是好想对属性不起作用)
        {
            
get
            
{
                
return text;
            }

            
set
            
{
                text 
= value;
            }

        }

        
private string _confirmMessage = "Is OK?";
        [Bindable(
true),
        Category(
"Appearance"),
        DefaultValue(
"Is OK?")]
        
public string ConfirmMessage
        
{

            
get

            
{

                
return _confirmMessage;

            }


            
set

            
{

                _confirmMessage 
= value;

            }


        }


        
/// <summary>
        
/// 将此控件呈现给指定的输出参数。
        
/// </summary>
        
/// <param name="output"> 要写出到的 HTML 编写器 </param>

        protected override void Render(HtmlTextWriter output)
        
{
            
base.Text=Text;//把new Text重新绑定到button.text
            base.Attributes.Add("OnClick","return confirm('"+this._confirmMessage+"');");//添加OnClick 属性/方法
            base.Render(output);//重新输出
        }

    }

}

posted on 2005-11-30 22:58  茶马古道  阅读(180)  评论(0)    收藏  举报