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
ASP.NET自定义控件入门Demo的更多相关文章
- 15、ASP.NET MVC入门到精通——MVC-路由
本系列目录:ASP.NET MVC4入门到精通系列目录汇总 Routing(路由) – URL url 作为广泛使用的Web用户接口,需要被重视 好的Url应该满足如下条件: URL应为获取某种资源提 ...
- 20、ASP.NET MVC入门到精通——WebAPI
本系列目录:ASP.NET MVC4入门到精通系列目录汇总 微软有了Webservice和WCF,为什么还要有WebAPI? 用过WCF的人应该都清楚,面对那一大堆复杂的配置文件,有时候一出问题,真的 ...
- 26、ASP.NET MVC入门到精通——后台管理区域及分离、Js压缩、css、jquery扩展
本系列目录:ASP.NET MVC4入门到精通系列目录汇总 有好一段时间没更新博文了,最近在忙两件事:1.看书,学习中...2.为公司年会节目做准备,由于许久没有练习双截棍了,难免生疏,所以现在临时抱 ...
- C#中缓存的使用 ajax请求基于restFul的WebApi(post、get、delete、put) 让 .NET 更方便的导入导出 Excel .net core api +swagger(一个简单的入门demo 使用codefirst+mysql) C# 位运算详解 c# 交错数组 c# 数组协变 C# 添加Excel表单控件(Form Controls) C#串口通信程序
C#中缓存的使用 缓存的概念及优缺点在这里就不多做介绍,主要介绍一下使用的方法. 1.在ASP.NET中页面缓存的使用方法简单,只需要在aspx页的顶部加上一句声明即可: <%@ Outp ...
- ASP.NET Aries 入门开发教程7:DataGrid的行操作(主键操作区)
前言: 抓紧勤奋,再接再励,预计共10篇来结束这个系列. 上一篇介绍:ASP.NET Aries 入门开发教程6:列表数据表格的格式化处理及行内编辑 本篇介绍主键操作区相关内容. 1:什么时候有默认的 ...
- ASP.NET Aries 入门开发教程6:列表数据表格的格式化处理及行内编辑
前言: 为了赶进度,周末也写文了! 前几篇讲完查询框和工具栏,这节讲表格数据相关的操作. 先看一下列表: 接下来我们有很多事情可以做. 1:格式化 - 键值的翻译 对于“启用”列,已经配置了格式化 # ...
- ASP.NET Aries 入门开发教程4:查询区的下拉配置
背景: 今天去深圳溜达了一天,刚回来,看到首页都是微软大法好,看来离.NET的春天就差3个月了~~ 回到正题,这篇的教程讲解下拉配置. 查询区的下拉配置: 1:查询框怎么配置成下拉? 在配置表头:格式 ...
- ASP.NET MVC4入门到精通系列目录汇总
序言 最近公司在招.NET程序员,我发现好多来公司面试的.NET程序员居然都没有 ASP.NET MVC项目经验,其中包括一些工作4.5年了,甚至8年10年的,许多人给我的感觉是:工作了4.5年,We ...
- 1、ASP.NET MVC入门到精通——新语法
本系列目录:ASP.NET MVC4入门到精通系列目录汇总 在学习ASP.NET MVC之前,有必要先了解一下C#3.0所带来的新的语法特性,这一点尤为重要,因为在MVC项目中我们利用C#3.0的新特 ...
随机推荐
- Head first javascript
基础 <script type="text/javascript"> function validateNumber(value) { // Validate the ...
- Git基础(二)
本章内容将介绍第二部分:本地仓储操作.为了加深对每个命令操作的理解,我们可以事先获取一个仓储边学边操作.这里首先 你要明白一个概念,所有本地工作目录下的文件状态无不在乎两种,已跟踪和未跟踪.已跟踪文件 ...
- Java中String 的equals 和==详解
一.Java中数据存储区域包括: 1.寄存器:最快的存储区,由编译器根据需求进行分配,我们在程序中无法控制. 2. 栈:存放基本类型的变量数据和对象的引用,但对象本身不存放在栈中,而是存放在堆(new ...
- HDU 2602 (简单的01背包) Bone Collector
很标准的01背包问题 //#define LOCAL #include <algorithm> #include <cstdio> #include <cstring&g ...
- duilib库分析: 消息流程分析
转 看下CWindowWnd类与CPaintManagerUI类是咋进行消息分发的吧. 1. 先看下CPaintManagerUI类的MessageLoop函数: void CPaintManag ...
- Cython:基础教程(1) 语法
1 变量定义 http://docs.cython.org/src/reference/language_basics.html http://blog.csdn.net/i2cbus/article ...
- QQ网站如何检测对本地已经登录的qq用户
网上有很多猜测,比如—— QQ 登录时在本地某地方存登录 ID 信息(Cookie 或文件),用 js 读,然后去服务器认证.但是现在的浏览器一般有沙箱功能,js 无法读到登录 ID:而且在清空 Co ...
- T-SQL备忘(5):查看执行计划
先理解几个概念:表扫描.聚集索引扫描.聚集索引查找.索引扫描.书签查找. [查看执行计划] 在理解概念之前先得知道如何查看执行计划—Ctrl+L.如下图: 注:SQL Server的执行计划是从右向左 ...
- GUID转换成16位字符串或19位数据(确保唯一)
// <summary> /// 根据GUID获取16位的唯一字符串 /// </summary> /// <param name=\"guid\"& ...
- mipmap 目录和drawable 目录有什么区别
Q :最近使用studio 发现drawle-hdpi 都没有了换成了mipmap-hdpi,这两个目录有什么区别呢,哪个比较好呢??? A: 我简单总结一下: 使用上没有任何区别,你把它当drawa ...