《用户控件和自定义控件.ppt》由会员分享,可在线阅读,更多相关《用户控件和自定义控件.ppt(16页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、用户控件和自定义控件用户控件和自定义控件西源软件培训中心西源软件培训中心回顾uHTML服务控件和Web服务控件的区别uRequiredFieldvalidator 检查必填字段中是否含有值uCompareValidator 控件将在一个窗体字段中输入的值与一个固定的值或任何其他窗体字段中的值进行比较uRangeValidator 控件用于检查在字段中输入的值是否介于最大值与最小值之间uRegularExpressionValidator 控件用于检查字段值是否与给定的正则表达式相符uCustomValidator 控件用来为窗体创建自定义验证标准uValidationSummary 控件概括窗
2、体中生成的所有错误uPage.IsValid 属性检查页面中的所有验证控件是否均已成功进行验证目标u理解明确创建自定义控件的必要性u理解使用 ASP.NET 创建简单的控件u理解使用 C#创建复合控件用户控件和自定义控件之间的差别 u用.ascx 文件表示u不出现在工具箱中u支持缓存u提供有限的支持u用.DLL 文件表示u出现在工具箱中u不支持缓存u提供全面支持用户控件自定义控件.ascx文件.DLL 文件创建用户控件用户控件 用户控件ASP.NET页面页面用户控件不能独立存在和使用,它要求将 ASP.NET 页面作为容器创建用户控件u在 VS.NET 中创建用户控件:u创建一个 ASP.NE
3、T Web 应用程序项目 UserControlDemo u移动到“项目”菜单,选择“添加 Web 用户控件”,命名为Head.ascxu在Head.ascx上添加控件u新建一个Web窗体,命名为TestUserControl.aspx,在解决方案资源管理器里把Head.ascx控件拖放到TestUserControl.aspx页面的涉及视图里u编译并在浏览器里浏览TestUserControl.aspx创建用户控件u示例程序可以象普通的ASP.NET页面一样,在用户控件上放置Web控件 创建用户控件u示例程序在Web页中使用自定义控件,把自定义控件拖放到Web页面即可使用 C#创建自定义控件
4、u建立自定义控件步骤u在 VS.NET 的“新建项目”选项中,在模板列表中选择“Web 控件库”模板选项,把项目命名为CustomerControls。Visual Studio.NET 将创建包含单一自定义控件的代码的项目 u添加一个新项,在模板里选择自定义控件,命名为UltraTextBox。移至“生成”选项,单击“生成 Repeater.cs”将 Repeater.cs 编译成.dll 文件,以便可以用于.aspx 页面中u在由设计器生成的代码模板 UltraTextBox.cs 中编写代码using System;using;using;using System.ComponentMo
5、del;namespace CustomerControls DefaultProperty(Text),ToolboxData()public class UltraTextBox:string _validString=;Bindable(true),Category(Appearance),DefaultValue()public UltraTextBox()/关联加载控件时要执行的代码 this.Load+=new EventHandler(UltraTextBox_Load);/被允许的字符组成的字符串属性 public string ValidString get return _
6、validString;set _validString=value;/控件加载时要执行的代码 private void UltraTextBox_Load(object sender,EventArgs e)/设定文本框输入文本时要调用的Javascript函数 (onkeypress,return CheckInput(+ValidString+););/得到文本框所在的页面对象 page=this.Page;/如果Javascript函数已经被注册到页面,则返回 if(page.IsStartupScriptRegistered(UltraTextBoxScript)return;/注册
7、Javascript函数 string scriptString=;scriptString+=n!-+n;scriptString+=function CheckInput(validString);scriptString+=;scriptString+=for(var i=0;i n;scriptString+=n;page.RegisterStartupScript(UltraTextBoxScript,scriptString);把自定义控件添加到工具箱使用自定义控件u在 VS.NET 中创建用户控件:u新建一个Web工程,命名为TestCustomerControl,用来测试Ult
8、raTextBox控件u在TestCustomerControl工程添加一个页面,命名为TestUltraText.aspxu添加控件u代码如下:使用自定义控件u程序运行只能输入数字只能输入字母WebForm1!-function CheckInput(validString)for(var i=0;i 浏览器产生的Javascript复合控件复合控件复合控件Composite.csusing System;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;namespace CompositeContro
9、l public class Composite:Control,INamingContainer public int Val get this.EnsureChildControls();return Int32.Parse(TextBox)Controls1).Text);如果在一个页面上放置多个控件实例,就需要这样做 该属性设置和返回在复合控件的文本框中包含的值 set this.EnsureChildControls();(TextBox)Controls1).Text=value.ToString();protected override void CreateChildContr
10、ols()this.Controls.Add(new LiteralControl(“值:);TextBox box=new TextBox();box.Text=0;this.Controls.Add(box);this.Controls.Add(new LiteralControl();复合控件 与前面已创建的任何其他自定义控件一样,在 aspx 页面上可以使用这个控件应写入 Codebehind 文件中的代码 输出结果 private void btnIncrement_Click(Object sender,EventArgs e)Composite1.Val=Composite1.V
11、al+1;private void btnDecrement_Click(Object sender,EventArgs e)Composite1.Val=Composite1.Val-1;总结u使用用户控件和自定义控件可以实现界面的重用u用户控件的扩展名是.ascx,该控件可在一个应用程序中使用,但不能跨应用程序u自定义控件被编译成.dll 文件,可以放置在工具箱里,它可以是继承于已有的Web控件,也可以是完全自定义。自定义控件可以跨应用程序域u复合自定义控件将一个或多个服务器或 HTML 控件组合在一个 Control 类中,该类可与其他控件类一起编译,以创建一个程序集作业 要求:u派生自Label控件的自定义控件MyWebLabel,此控件拥有一个Size属性,通过设置这一属性可以控制字体的大小展示如下图: