《第四讲用户控件和自定义控件ppt课件.ppt》由会员分享,可在线阅读,更多相关《第四讲用户控件和自定义控件ppt课件.ppt(16页珍藏版)》请在三一办公上搜索。
1、用户控件和自定义控件,西源软件培训中心,回顾,HTML服务控件和Web服务控件的区别RequiredFieldvalidator 检查必填字段中是否含有值CompareValidator 控件将在一个窗体字段中输入的值与一个固定的值或任何其他窗体字段中的值进行比较RangeValidator 控件用于检查在字段中输入的值是否介于最大值与最小值之间RegularExpressionValidator 控件用于检查字段值是否与给定的正则表达式相符CustomValidator 控件用来为窗体创建自定义验证标准ValidationSummary 控件概括窗体中生成的所有错误Page.IsValid
2、属性检查页面中的所有验证控件是否均已成功进行验证,目标,理解明确创建自定义控件的必要性理解使用 ASP.NET 创建简单的控件理解使用 C#创建复合控件,用户控件和自定义控件之间的差别,用.ascx 文件表示不出现在工具箱中支持缓存提供有限的支持,用.DLL 文件表示出现在工具箱中不支持缓存提供全面支持,用户控件,自定义控件,.ascx文件,.DLL 文件,创建用户控件,用户控件,用户控件,ASP.NET页面,用户控件不能独立存在和使用,它要求将 ASP.NET 页面作为容器,创建用户控件,在 VS.NET 中创建用户控件:创建一个 ASP.NET Web 应用程序项目 UserControl
3、Demo 移动到“项目”菜单,选择“添加 Web 用户控件”,命名为Head.ascx在Head.ascx上添加控件新建一个Web窗体,命名为TestUserControl.aspx,在解决方案资源管理器里把Head.ascx控件拖放到TestUserControl.aspx页面的涉及视图里编译并在浏览器里浏览TestUserControl.aspx,创建用户控件,示例程序,可以象普通的ASP.NET页面一样,在用户控件上放置Web控件,创建用户控件,示例程序,在Web页中使用自定义控件,把自定义控件拖放到Web页面即可,使用 C#创建自定义控件,建立自定义控件步骤在 VS.NET 的“新建项
4、目”选项中,在模板列表中选择“Web 控件库”模板选项,把项目命名为CustomerControls。Visual Studio.NET 将创建包含单一自定义控件的代码的项目 添加一个新项,在模板里选择自定义控件,命名为UltraTextBox。移至“生成”选项,单击“生成 Repeater.cs”将 Repeater.cs 编译成.dll 文件,以便可以用于.aspx 页面中在由设计器生成的代码模板 UltraTextBox.cs 中编写代码,using System;using System.Web.UI;using System.Web.UI.WebControls;using Syst
5、em.ComponentModel;namespace CustomerControls DefaultProperty(Text),ToolboxData()public class UltraTextBox:System.Web.UI.WebControls.TextBox string _validString=;Bindable(true),Category(Appearance),DefaultValue()public UltraTextBox()/关联加载控件时要执行的代码 this.Load+=new EventHandler(UltraTextBox_Load);,/被允许的
6、字符组成的字符串属性 public string ValidString get return _validString;set _validString=value;/控件加载时要执行的代码 private void UltraTextBox_Load(object sender,EventArgs e)/设定文本框输入文本时要调用的Javascript函数 this.Attributes.Add(onkeypress,return CheckInput(+ValidString+););/得到文本框所在的页面对象 System.Web.UI.Page page=this.Page;/如果J
7、avascript函数已经被注册到页面,则返回 if(page.IsStartupScriptRegistered(UltraTextBoxScript)return;,/注册Javascript函数 string scriptString=;scriptString+=nn;scriptString+=n;page.RegisterStartupScript(UltraTextBoxScript,scriptString);,把自定义控件添加到工具箱,使用自定义控件,在 VS.NET 中创建用户控件:新建一个Web工程,命名为TestCustomerControl,用来测试UltraText
8、Box控件在TestCustomerControl工程添加一个页面,命名为TestUltraText.aspx添加控件代码如下:,使用自定义控件,程序运行,只能输入数字,只能输入字母,WebForm1,浏览器产生的Javascript,复合控件,复合控件,复合控件,自定义控件,Windows 控件,复合控件,Composite.cs,using System;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;namespace CompositeControl public class Composite:
9、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 CreateChildControls()this.Controls.Add(n
10、ew 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.Val+1;private void btnD
11、ecrement_Click(Object sender,EventArgs e)Composite1.Val=Composite1.Val-1;,总结,使用用户控件和自定义控件可以实现界面的重用用户控件的扩展名是.ascx,该控件可在一个应用程序中使用,但不能跨应用程序自定义控件被编译成.dll 文件,可以放置在工具箱里,它可以是继承于已有的Web控件,也可以是完全自定义。自定义控件可以跨应用程序域复合自定义控件将一个或多个服务器或 HTML 控件组合在一个 Control 类中,该类可与其他控件类一起编译,以创建一个程序集,作业,要求:派生自Label控件的自定义控件MyWebLabel,此控件拥有一个Size属性,通过设置这一属性可以控制字体的大小展示如下图:,