首页 > 代码库 > ASP.NET自定义控件入门Demo
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下载
ASP.NET自定义控件入门Demo
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。