知道一动手出了错误在这里特意提醒园子里的朋友不要范我同样的错误.
1using System;
2using System.Collections.Generic;
3using System.Text;
4using System.ComponentModel;
5using System.Web.UI;
6namespace UserControl
7{
8 [ToolboxData(@"<{0}:MyLabel runat='server'>{0}:MyLabel>")]
9 class MyLabel:System.Web.UI.WebControls.Label
10 {
11 protected override void AddAttributesToRender(System.Web.UI.HtmlTextWriter writer)
12 {
13
14 }
15 public override void RenderBeginTag(System.Web.UI.HtmlTextWriter writer)
16 {
17 writer.AddAttribute(HtmlTextWriterAttribute.Href, "http://www.sina.com.cn");
18 writer.RenderBeginTag(System.Web.UI.HtmlTextWriterTag.A);
19 }
20 public override void RenderEndTag(System.Web.UI.HtmlTextWriter writer)
21 {
22 writer.RenderEndTag();
23 }
24 protected override void RenderContents(HtmlTextWriter writer)
25 {
26 writer.Write("hello world!");
27 }
28 }
29}内容没有什么好说的,都是很简单的东西.
当我把这个控件添加到工具栏准备往ASPX页面拖时 问题出现了.在向aspx的页面设计器拖拽的时候鼠标变成禁止的状态.
原来定义的MyLabel类不是public的,通过进一步测试发现如果通过类库新建一个类,则该类默认的定义是class ClassName,没有public 前缀。而在vs2003的类库新建类不会出现此问题,不知道是vs2005的bug还是微软有什么其他的考虑?
如果定义的类没有public前缀,则你在编译或者调用的时候会发现编译错误。而此时如果通过页面设计器来拖拽该类,则会出现题目错误。如果vs2005 IDE工具箱只显示有public前缀的类,那么这个难于发现的问题同样的一避免,不过还是建议大家在新建类的时候注意public前缀。
本文作者:yanzimywife 来源:http://www.cnblogs.com/yanzimywife/
CIO之家 www.ciozj.com 微信公众号:imciow
免责声明:本站转载此文章旨在分享信息,不代表对其内容的完全认同。文章来源已尽可能注明,若涉及版权问题,请及时与我们联系,我们将积极配合处理。同时,我们无法对文章内容的真实性、准确性及完整性进行完全保证,对于因文章内容而产生的任何后果,本账号不承担法律责任。转载仅出于传播目的,读者应自行对内容进行核实与判断。请谨慎参考文章信息,一切责任由读者自行承担。