您的位置:首页 > 编程语言 > ASP

在VS2008中创建自定义控件(二)创建自定义控件并将其添加到工具箱中

2010-05-31 17:43 381 查看
 

 

 

本文目的:

1、创建一个自定义控件。

2、将自定义控件添加到工具箱中,以便调用。

本文的最终结果如下图所示。



 

 

 

    接上文《在VS2008中创建自定义控件(一)创建网站项目和自定义控件项目》,下图是添加了自定义控件项目后“解决方案资源管理器”中的结果。



 
 
    从上图中我们可以看出,在创建项目时,VS已经为我们创建了一个名为“ServerControl1”的自定义控件。这个控件我们现在不去管它,我们现在要自己添加一个自定义控件,这个自定义控件和文本框是一个样,只不过要添加该控件时,文本框架中会显示默认的文字(不用我们每次都设这个默认值)。添加方法如下所示:
 
    1、右击“YundaoControls”项目,在弹出的快捷键菜单中选择“添加”-->“新项”,在弹出的对话框中选择“ASP.NET服务器控件”,并输入名称。如下图所示。
 



 
    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、右击网站项目(第一个项目),在弹出的快捷菜单中选择“添加引用”,如下图所示。



 
   2、在弹出的对话框架中选择“项目”选项卡,如下图所示,VS已经自动将YundaoControls的DLL添加进出,此时,可以直接单击“确定”按钮。



 
    3、在网站项目里(第一个项目)打开一个网页文件,并打开其“设计”视图(一定要打开“设计”视图哟),再点开工具箱,此时可以看到工具箱里多了一个“YundaoControls组件”选项卡,如下图所示,这个选项卡下有两个控件。这两个组件一个是前面VS生成的ServerControl1自定义控件,另一个就是前面我们添加的“yundaoTextBox”自定义控件。



 
 
 

===================================================================

原创不容易,转载请注明出处:http://hi.csdn.net/smallfools
相关链接:
在VS2008中创建自定义控件(一)创建网站项目和自定义控件项目

在VS2008中创建自定义控件(二)创建自定义控件并将其添加到工具箱中

在VS2008中创建自定义控件(三)在网页中添加自定义控件

在VS2008中创建自定义控件(四)为自定义控件添加默认值

在VS2008中创建自定义控件(五)修改tagprefix

在VS2008中创建自定义控件(六)创建完全自定义控件

在VS2008中创建自定义控件(七)自定义控件的中常用到的特性

在VS2008中创建自定义控件(八)输出HTML代码

在VS2008中创建自定义控件(九)添加属性

在VS2008中创建自定义控件(十)添加枚举型属性

在VS2008中创建自定义控件(十一)添加在属性窗口中可折叠的属性(一)

在VS2008中创建自定义控件(十二)添加在属性窗口中可折叠的属性(二)

在VS2008中创建自定义控件(十三)添加内镶属性

在VS2008中创建自定义控件(十四)内镶属性与内联属性的优先级

在VS2008中创建自定义控件(十五)创建控件时出错(未能对属性XXX设置XXX)的解决方法

===================================================================

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息