快速搜索
主页 > ag亚游vip|HOME > asp.netag怎么试玩|平台 >

ASP.NET自定义Web服务器控件之Button控件

时间:2014-11-26 02:11来源:网络整理 作者:网络 点击:
分享到:
这篇文章主要介绍了ASP.NET自定义Web服务器控件之Button控件,详细讲述了Button控件的实现代码、前台页面的调用以及对应的事件响应代码,具有很好的参考借鉴价值,需要的朋友可以参考下

本文实例讲述了ASP.NET自定义Web服务器控件之Button控件实现方法。分享给大家供大家参考。具体实现方法如下:

复制代码 代码如下:
using System;?
using System.Collections.Generic;?
using System.ComponentModel;?
using System.Linq;?
using System.Text;?
using System.Web;?
using System.Web.UI;?
using System.Web.UI.WebControls;?
?
//自定义web服务器button?
namespace MyControls?
{?
??? [DefaultProperty("Text")]?
??? [ToolboxData("<{0}:MyButton runat=server>")]?
??? public class MyButton : WebControl,IPostBackEventHandler?
??? {?
??????? [Bindable(true)]?
??????? [Category("Appearance")]?
??????? [DefaultValue("")]?
??????? [Localizable(true)]?
??????? public string Text?
??????? {?
??????????? get?
??????????? {?
??????????????? String s = (String)ViewState["Text"];?
??????????????? return ((s == null) ? String.Empty : s);?
??????????? }?
?
??????????? set?
??????????? {?
??????????????? ViewState["Text"] = value;?
??????????? }?
??????? }?
?
ag亚游vip|HOME ??????? [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]//生成属性时,按属性内部内容生成(例如在此控件里面(Size-Height,Size_Width))?
??????? //[PersistenceMode(PersistenceMode.InnerProperty)]//以子标签的形式显示(例如)?
??????? public Size Size?
??????? {?
??????????? get?
??????????? {?
??????????????? if (ViewState["Size"] == null) {?
??????????????????? ViewState["Size"] = new Size();?
??????????????? }?
??????????????? return (Size)ViewState["Size"];?
??????????? }?
?
??????????? set?
??????????? {?
??????????????? ViewState["Size"] = value;?
??????????? }?
??????? }?
??????? //定义控件的标签形式?
??????? protected override HtmlTextWriterTag TagKey?
??????? {?
??????????? get?
??????????? {?
??????????????? return HtmlTextWriterTag.Input;?
??????????? }?
??????? }?
?
??????? //初始化?
??????? protected override void OnInit(EventArgs e)?
??????? {?
??????????? this.Style.Add("width", Size.Width + "px");?
??????????? this.Style.Add("height", Size.Height + "px");?
??????????? this.Attributes.Add("type", "submit"); //提交按钮?
??????????? this.Attributes.Add("value",Text);?
??????????? this.Attributes.Add("name",this.UniqueID);//回发事件必须有的一个属性?
??????????? base.OnInit(e);?
??????? }?
??????? //打印当前控件的内容?
??????? protected override void RenderContents(HtmlTextWriter output)?
??????? {?
??????????? //output.Write(Text);?
??????? }?
?????????
??????? public delegate void ClickHandle();?
??????? private object key=new object();?
??????? public event ClickHandle Click {?
??????????? add {?
??????????????? this.Events.AddHandler(key,value);?
??????????? }?
??????????? remove {?
??????????????? this.Events.RemoveHandler(key, value);?
??????????? }?
??????? }?
??????? //按钮的回发事件?
??????? public void RaisePostBackEvent(string eventArgument)?
??????? {?
??????????? ClickHandle handle = (ClickHandle)base.Events[key];?
??????????? if (handle != null) {?
??????????????? handle();?
??????????? }?
??????? }?
??? }?
}
精彩图集

赞助商链接