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

 更新时间:2014年11月25日 09:03:06   投稿:shichen2014  
这篇文章主要介绍了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></{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程序设计有所帮助。

相关文章

  • ASP.NET Core 7 Razor Pages项目发布到IIS的详细过程

    ASP.NET Core 7 Razor Pages项目发布到IIS的详细过程

    这篇文章主要介绍了ASP.NET Core 7 Razor Pages项目发布到IIS的详细过程,详细介绍了发布过程遇到的问题及解决方法,对ASP.NET Core 发布到IIS相关知识感兴趣的朋友一起看看吧
    2023-01-01
  • 关于.NET6 Minimal API的使用方式详解

    关于.NET6 Minimal API的使用方式详解

    本文我们主要是介绍了ASP.NET Core 6 Minimal API的常用的使用方式,在.NET6中也是默认的项目方式,整体来说却是非常的简单、简洁、强大、灵活,不得不说Minimal API却是在很多场景都非常适用的
    2021-12-12
  • .net core高吞吐远程方法如何调用组件XRPC详解

    .net core高吞吐远程方法如何调用组件XRPC详解

    这篇文章主要给大家介绍了关于.net core高吞吐远程方法如何调用组件XRPC的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用.net core具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-05-05
  • Asp.Net实现的通用分页函数

    Asp.Net实现的通用分页函数

    这篇文章主要介绍了Asp.Net实现的通用分页函数,结合实例形势分析了asp.net分页函数的功能,定义及使用技巧,需要的朋友可以参考下
    2016-04-04
  • 详解ASP.NET Core MVC 源码学习:Routing 路由

    详解ASP.NET Core MVC 源码学习:Routing 路由

    本篇文章主要介绍了详解ASP.NET Core MVC 源码学习:Routing 路由 ,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-03-03
  • aspx超强木马查杀与防范(web网马)

    aspx超强木马查杀与防范(web网马)

    下面代码是一个aspx超强木马,功能很多,大家在服务器上见到一定要小心
    2013-12-12
  • ASP.NET缓存方法分析和实践示例代码

    ASP.NET缓存方法分析和实践示例代码

    尽早缓存;经常缓存 您应该在应用程序的每一层都实现缓存。向数据层、业务逻辑层、UI 或输出层添加缓存支持。
    2008-11-11
  • asp.net 分页链接方法

    asp.net 分页链接方法

    asp.net 分页链接方法,需要的朋友可以参考下。
    2010-03-03
  • Entity Framework加载控制Loading Entities

    Entity Framework加载控制Loading Entities

    本文详细讲解了Entity Framework加载控制Loading Entities的用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • 深入讲解.Net Core中的Api版本控制

    深入讲解.Net Core中的Api版本控制

    这篇文章主要给大家介绍了关于.Net Core中Api版本控制的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-10-10

最新评论