本文实例讲述了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></{0}:MyButton>")] 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; } } [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]//生成属性时,按属性内部内容生成(例如在此控件里面(Size-Height,Size_Width)) //[PersistenceMode(PersistenceMode.InnerProperty)]//以子标签的形式显示(例如<Size Width="" Height=""/>) 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(); } } } }
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <%@ Register assembly="MyControls" namespace="MyControls" tagprefix="cc1" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <!--自定义服务器按钮控件--> <cc1:MyButton ID="MyButton1" Size-Height="30" Size-Width="290" OnClick="btnSubmit" Text="我是一个单独的提交按钮(自定义服务器)" runat="server" /> </div> </form> </body> </html>
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } //自定义服务器控件 protected void btnSubmit() { Response.Write("我是自定义服务器控件的点击事件"); } }
希望本文所述对大家的asp.net程序设计有所帮助。