Asp.net自定义控件开发任我行(1)-笑傲江湖
1.引言
参加工作5个月了,来到一家小公司,有几只老鸟带我,但不是我公司的,几个礼拜才来一次。来到公司做的第一个项目是web项目,里面有很多的重复代码,页面代码都是千篇一律,你这人也太水了吧,垃圾代码这么多,被人鄙视了,人嘛,总是要别人刺痛一两次才会往前走,谈恋爱也一样,伤过了,才醒了。
我的最终目的是完成DropDownCheckList这个控件,DropDwonList只能单选,而此控件可以多选的效果,这个效果相信网上的例子一定很多,虽然自己写代码的时代已经过去了,但我还是愿意多写点代码,多学点东西。此文章,记录了我一步步走过来的点点滴滴。
2.分析
1.新建类库,命名为XYB.Controls,XYB 为我的真实的姓名的缩写,在此类库中添加一个类命名为TextEdit,再新建一个Web应用程序,命名为XYB.UI,在XYB.UI 中添加一个页面,命名为TextEditUI.aspx
2.导入命名空间
using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Web.UI;
using System.ComponentModel;//包含组件开发所必须含有的(属性)Attribute;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
3.继承
既然是控件开发,又是Web控件,当然要继承WebControl类,此类的命名空间是System.Web.UI.WebControls,WebControl继承了Control。
我们这里直接TextBox控件,TextBox继承了WebControl,拥有了TextBox所有的特性
using System;
using System.Text;
using System.Web.UI;
using System.ComponentModel;//包含组件开发所必须含有的(属性)Attribute;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Collections.Generic;
namespace XYB.Controls
{
public class TextEdit:TextBox
{ }
}
重新生成一下,在工具栏中就会有一个TextEdit的控件,如果没有,按照我以下的步骤,将控件加进来
1.在工具栏下面找个空白的地方点击右键-->添加选项卡,命名为XYB.Controls组件,名字随便取,再在刚新建好的XYB.Controls组件选项组中找个空白的位置点击右键-->选择项-->浏览,找到XYB.Controls.dll类库,将其添加进来,于是在工具栏中就多了一个TextEdit控件了





3.至此,最简单的自定义控件就完成了,将其拖到页面中去,在浏览器中浏览,其实此控件只是TextBox的一个替身
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TextEditUI.aspx.cs" Inherits="XYB.UI.TextEditUI" %> <%@ Register Assembly="XYB.Controls" Namespace="XYB.Controls" 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"> <cc1:TextEdit ID="TextEdit1" runat="server"></cc1:TextEdit> </form>
</body>
</html>

下集预知:
自定义TagPrefix 标签,敬请大家关注我!
Asp.net自定义控件开发任我行(1)-笑傲江湖的更多相关文章
- Asp.net自定义控件开发任我行(附1)-属性一览众山小
元数据属性应用于服务器控件及其成员,从而提供由设计工具.ASP.NET 页分析器.ASP.NET 运行库以及公共语言运行库使用的信息.当页开发人员在可视化设计器中使用控件时,设计时属性能改进开发人员的 ...
- Asp.net自定义控件开发任我行(4)-ViewState保存控件状态
摘要 上一篇我们实现了下拉框的效果,此章的目的主要是保存控件属性状态 内容 我们先来看一个例子,后台代码不变,我们只改UI页面的代码,先在页面上拖放两个控件,一个是我们现在要开发的这个控件,另一个是按 ...
- Asp.net自定义控件开发任我行(2)-TagPrefix标签
摘要 前面我们已经做了一个最简单的TextBox的马甲,此篇文章,我们来讲讲自定义控件的标签.大家可能看到了上一篇中拖放进来的代码是 <cc1:TextEdit ID="TextEdi ...
- Asp.net自定义控件开发任我行(3)-Render
摘要 上一篇我们讲到了自定义标签TagPrefix用法,此篇我们来讲一下控件的呈现,主要是呈现下拉框 内容 呈现的方法有,Render,RenderControl,RenderChildren,这三个 ...
- Asp.net自定义控件开发任我行(8)-数据集绑定
摘要 已经有好几天没有写博客了,今天继续,前几天写到了注册自定义事件,今天我们来讲数据集绑定. 先把运行效果截个图给大家看,让大家心里也有个底.(大家要从第一章开始看起,我们每一章都是接着前面没做完的 ...
- Asp.net自定义控件开发任我行(5)-嵌入资源上
摘要 上一篇我们讲了VitwState保存控件状态,此章我们来讲讲嵌入css文件,js文件,嵌入Image文件我也一笔带过. 内容 随着我的控件的完善,我们目标控件DropDwonCheckList最 ...
- Asp.net自定义控件开发任我行(7)-注册自定义事件
摘要 前面我们已经把嵌入资源讲完了,不知道大家有没有得到收益,本章主要讲自定义事件,也就是给TextBox注册一个点击事件. 引言 不知道道上的朋友有没有注意到TextBox控件没有点击事件,就连网上 ...
- Asp.net自定义控件开发任我行(6)-嵌入资源下
摘要 上一章,我们讲了嵌入.css文件,这一章,我们来讲一下嵌入.js文件,也顺带一个嵌入Image文件 内容 我们前面的几章,一运行,下拉框就显示出来了,但是DropDwonList的下拉框是被隐藏 ...
- Asp.net 自定义控件开发相关的几种嵌入资源解决方案
前提: 如下将要介绍的几种类型资源都要在其属性页窗口, 将 <生成操作> 属性, 设置为[嵌入的资源], 如图: ► 给自定义控件添加自定义图标的几种方案 方法一: 直接在自定义控 ...
随机推荐
- php 05
流程控制 一.流程控制 1.顺序结构 //自上而下 从左到右 2.条件分支结构 a. 单向分支结构 if() 只能管理一条指令 这条指令是和他紧跟着的指令 if(){} 只能管理整个花括号里面的代码 ...
- 解决perl: warning: Setting locale failed.
在Ubuntu Server 12.04上执行apt-get install命令时,报如下warning 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ...
- [QualityCenter]设置工作流脚本-根据某字段是否包含指定字符串来判断其他字段的选值
需求:当在创建或更改值时,自动判断A字段是否包含B值,然后自动填写相应的内容. 如以下例子: 在脚本编辑器新建一个函数TestPlan_Test_New,然后编写脚本如下: '通过主题判断项目内容 ...
- Log4j知识汇总
Log4j在java开发中还是很常见的,而在日志系统里面也占有举足轻重的地位,想要做好日志相关的工作,了解log4j还是很必要的. 下面就针对 log4j的官方文档user-guide 进行翻译与整理 ...
- Win10 耳机无声音,扬声器有声音的解决办法
注:适用于WIN10及WIN10.ubuntu双系统耳机无声音的问题. 在WIN10的引导下,安装了Ubuntu的桌面版,作成了双系统,可是发现了一个问题:进入Win10后插耳机会没有声音,扬声器有声 ...
- java Vamei快速教程08 继承
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 继承(inheritance)是面向对象的重要概念.继承是除组合(composit ...
- MySQL设计规范与性能优化
引言 MySQL是目前使用最为广泛的关系型数据库之一,如果使用得当,可支撑企业级高并发.高可靠服务,使用不当甚至连并发量略高的个人网站都难以支撑: 就算使用了缓存,大量的数据库访问依旧在所难免,即使设 ...
- UVA Live Achrive 4327 Parade (单调队列,dp)
容易想到dp[i][j]表示在第i行j个路口的开始走最大高兴值. 每次可以向左走,或者向右边走,然后向北走.(或者直接往北) 向左走到,状态转移为dp[i][j] = dp[i][k] + happy ...
- python读取图像
from PIL import Imageimg = Image.open('/Users/NaCl/Desktop/test.png')img.show()
- angular路由学习笔记
文章目录 标签routerLink路由传递参数 url中get传值 定义路由 获取参数 配置动态路由 定义路由 获取参数 API js路由跳转 配置动态路由 定义路由 获取参数 get传值 定义路由 ...