在VS2008中创建自定义控件(二)创建自定义控件并将其添加到工具箱中
2010-05-31 17:43
381 查看
本文目的:
1、创建一个自定义控件。
2、将自定义控件添加到工具箱中,以便调用。
本文的最终结果如下图所示。
![](http://hi.csdn.net/attachment/201105/10/0_1305033098w9WR.gif)
接上文《在VS2008中创建自定义控件(一)创建网站项目和自定义控件项目》,下图是添加了自定义控件项目后“解决方案资源管理器”中的结果。
![](http://hi.csdn.net/attachment/201105/10/0_1305033191zFzm.gif)
从上图中我们可以看出,在创建项目时,VS已经为我们创建了一个名为“ServerControl1”的自定义控件。这个控件我们现在不去管它,我们现在要自己添加一个自定义控件,这个自定义控件和文本框是一个样,只不过要添加该控件时,文本框架中会显示默认的文字(不用我们每次都设这个默认值)。添加方法如下所示:
1、右击“YundaoControls”项目,在弹出的快捷键菜单中选择“添加”-->“新项”,在弹出的对话框中选择“ASP.NET服务器控件”,并输入名称。如下图所示。
![](http://hi.csdn.net/attachment/201105/10/0_1305033204o2zp.gif)
2、VS会自动在yundaoTextBox.cs中文件添加内容,如下所示。
using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace YundaoControls { [DefaultProperty("Text")] [ToolboxData("<{0}:yundaoTextBox runat=server></{0}:yundaoTextBox>")] public class yundaoTextBox : WebControl { [Bindable(true)] [Category("Appearance")] [DefaultValue("")] [Localizable(true)] public string Text { get { String s = (String)ViewState["Text"]; return ((s == null) ? String.Empty : s); } set { ViewState["Text"] = value; } } protected override void RenderContents(HtmlTextWriter output) { output.Write(Text); } } }
以上代码这此就不过多地解释了,下面只说明需要修改的几个地方。
a、因为我们的目的是添加一个自定义的文本框,所以,这个类应该承继TextBox类,因此,将“public class yundaoTextBox : WebControl”改为“public class yundaoTextBox : TextBox”。
b、由于TextBox类中包括了Text属性,所以,要将yundaoTextBox的Text属性重写。将“public string Text”改为“public override string Text”。
修改完后的代码如下所示(我加了些注释):
using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace YundaoControls { [DefaultProperty("Text")] [ToolboxData("<{0}:yundaoTextBox runat=server></{0}:yundaoTextBox>")] public class yundaoTextBox : TextBox { /// <summary> /// 实现Text属性 /// </summary> [Bindable(true)] [Category("Appearance")] [DefaultValue("")] [Localizable(true)] public override string Text { get { String s = (String)ViewState["Text"]; return ((s == null) ? String.Empty : s); } set { ViewState["Text"] = value; } } /// <summary> /// 重写RenderContents方法 /// </summary> /// <param name="output"></param> protected override void RenderContents(HtmlTextWriter output) { //输出流 output.Write(Text); } } }
3、生成解决方案。
如果解决方案生成后没有什么错误的话,就可以将自定控件添加到工具箱中了。添加方法如下所示:
1、右击网站项目(第一个项目),在弹出的快捷菜单中选择“添加引用”,如下图所示。
![](http://hi.csdn.net/attachment/201105/10/0_1305033221T4Do.gif)
2、在弹出的对话框架中选择“项目”选项卡,如下图所示,VS已经自动将YundaoControls的DLL添加进出,此时,可以直接单击“确定”按钮。
![](http://hi.csdn.net/attachment/201105/10/0_1305033236deK9.gif)
3、在网站项目里(第一个项目)打开一个网页文件,并打开其“设计”视图(一定要打开“设计”视图哟),再点开工具箱,此时可以看到工具箱里多了一个“YundaoControls组件”选项卡,如下图所示,这个选项卡下有两个控件。这两个组件一个是前面VS生成的ServerControl1自定义控件,另一个就是前面我们添加的“yundaoTextBox”自定义控件。
![](http://hi.csdn.net/attachment/201105/10/0_1305033249HSCx.gif)
===================================================================
原创不容易,转载请注明出处:http://hi.csdn.net/smallfools
相关链接:
在VS2008中创建自定义控件(一)创建网站项目和自定义控件项目
在VS2008中创建自定义控件(二)创建自定义控件并将其添加到工具箱中
在VS2008中创建自定义控件(三)在网页中添加自定义控件
在VS2008中创建自定义控件(四)为自定义控件添加默认值
在VS2008中创建自定义控件(五)修改tagprefix
在VS2008中创建自定义控件(六)创建完全自定义控件
在VS2008中创建自定义控件(七)自定义控件的中常用到的特性
在VS2008中创建自定义控件(八)输出HTML代码
在VS2008中创建自定义控件(九)添加属性
在VS2008中创建自定义控件(十)添加枚举型属性
在VS2008中创建自定义控件(十一)添加在属性窗口中可折叠的属性(一)
在VS2008中创建自定义控件(十二)添加在属性窗口中可折叠的属性(二)
在VS2008中创建自定义控件(十三)添加内镶属性
在VS2008中创建自定义控件(十四)内镶属性与内联属性的优先级
在VS2008中创建自定义控件(十五)创建控件时出错(未能对属性XXX设置XXX)的解决方法
===================================================================
相关文章推荐
- 在VS2008中创建自定义控件(二)创建自定义控件并将其添加到工具箱中
- 在VS2008中创建自定义控件(三)在网页中添加自定义控件
- 在VS2008中创建自定义控件(十二)添加在属性窗口中可折叠的属性(二)
- 在VS2008中创建自定义控件(十三)添加内镶属性
- 在VS2008中创建自定义控件(十二)添加在属性窗口中可折叠的属性(二)
- VS2008让项目中的自定义控件编译后自动添加到工具箱中
- 在VS2008中创建自定义控件(九)添加属性
- 在VS2008中创建自定义控件(十)添加枚举型属性
- 在VS2008中创建自定义控件(三)在网页中添加自定义控件
- 在VS2008中创建自定义控件(十一)添加在属性窗口中可折叠的属性(一)
- 在VS2008中创建自定义控件(十一)添加在属性窗口中可折叠的属性(一)
- 在VS2008中创建自定义控件(四)为自定义控件添加默认值
- 在VS2008中创建自定义控件(十三)添加内镶属性
- 在VS2008中创建自定义控件(四)为自定义控件添加默认值
- 在VS2008中创建自定义控件(十)添加枚举型属性
- vs2008在选择工具箱添加项后自动关闭问题解决
- 解决 VS2008创建RDLC报表后工具箱没有工具
- c#创建自定义控件并给控件添加事件
- VS2008创建RDLC报表后工具箱没有工具
- VS2008向工具箱中添加控件解决 未能实例化 设计时授权