自定义个性化的web复合控件
2024-07-21 02:21:42
供稿:网友
 
.net为大家提供了各种各样的控件,也足够的丰富多彩。但是有时候你是不是想开发一些自己的控件以提高开发效率,或者实现一些特殊的功能呢。
下面我讲述一下,建立一个最基本的web复合控件的过程。
首先新建一个c#类库项目,取名叫mycontrol吧。删除默认的类文件class1,然后建立我们自己的类文件mycontrol.cs。
现在我们向其中添加密码。
在刚生成的代码上先把它修改成这样子
我们将使用以下引用:
using system;
using system.io;
using system.drawing;
using system.web.ui;
using system.web.ui.webcontrols;
using system.componentmodel;
 
 保证我们的mycontro是从webcontrol继承的。
 public class mycontrol:webcontrol
 下面我们将重写下面两个函数,这都是必须的
 protected override void render(htmltextwriter writer)
 protected override void createchildcontrols()
 修改第一个函数为下面代码
protected override void render(htmltextwriter writer)
 {
 this.createchildcontrols();
 base.render (writer);
 }
 修改第二个函数为下面代码
 protected override void createchildcontrols()
 {
 // 清除现有的子控件及其 viewstate
 this.controls.clear();
 this.clearchildviewstate();
 
 // 生成控件树 
 // 生成环境表格(一行,两个单元格)
 table mytable = new table();
 //build the table row生成表格中的行
 tablerow row = new tablerow();
 mytable.rows.add(row);
 // 生成单元格
 tablecell mycell = new tablecell();
 
//用来生成链接按钮导航条的代码。每个按钮都显示有一个 webdings 字符,可以根据需//禁用,并被绑定到内部的 click 事件处理程序。
 linkbutton mylinkbutton = new linkbutton();
 mylinkbutton.id = "mylinkbutton";
 mylinkbutton.click += new eventhandler(mylinkbutton_click);
 mylinkbutton.font.name = "宋体";
 mylinkbutton.tooltip = "好玄啊!";
 mylinkbutton.text = "请点我";
 mycell.controls.add(mylinkbutton);
 row.cells.add(mycell); 
 controls.add(t);
 }
 下面写你自己的事件的方法吧
private void mylinkbutton_click(object sender,system.eventargs e)
 {
 page.response.write("想干点什么就写点什么吧,就这么简单!");
}
下面编译一下吧,然后点工具—》添加/移除工具箱项
然后浏览到你编译生成的dll,现在在工具箱里你看到了什么?
把mycontrol拖到你自己的webform上看看效果吧。
 
ok,就这么简单。
好了,时间不多就先写到这里吧。
 
我们以后将继续讨论这个自定义控件的扩展。不过聪明的你也应该能扩展出很多功能来了吧。
中国最大的web开发资源网站及技术社区,