用户控件和自定义控件的定义的区别
- 格式:doc
- 大小:12.74 KB
- 文档页数:2
4.0 用户控件的概述用户控件是页面的一段,包含了静态HTML代码和服务器控件。
其优点在于一旦创建了一个用户控件,可以在同一个应用的多个页面中重用。
并且,用户可以在Web用户控件中,添加该控件的属性、事件和方法。
1.什么是用户控件用户控件(后缀名为.ascx)文件与网页窗体(后缀名为.aspx)文件相似。
就像网页窗体一样,用户控件由用户接口部分和控制标记组成,而且可以使用嵌入脚本或者.cs代码后置文件。
用户控件能够包含网页所能包含的任何东西,包括静态HTML内容和控件,它们也作为页面对象(Page Object)接收同样的事件(如Load和PreRender),也能够通过属性(如Application,Session,Request 和Response)来展示内建对象。
用户控件使程序员能够很容易地跨Web应用程序划分和重复使用公共UI功能。
与窗体页相同,用户可以使用任何文本编辑器创作用户控件,或者使用代码隐藏类开发用户控件。
此外,用户控件可以在第一次请求时被编译并存储在服务器内存中,从而缩短以后请求的响应时间。
与服务器端包含文件(SSI)相比,用户控件通过访问由提供的对象模型支持,使程序员具有更大的灵活性。
程序员可以对在控件中声明的任何属性进行编程,而不只是包含其他文件提供的功能,这与其他任何服务器控件一样。
此外,可以独立于包含用户控件的窗体页中除该控件以外的部分来缓存该控件的输出。
这一技术称作片段缓存,适当地使用该技术能够提高站点的性能。
例如,如果用户控件包含提出数据库请求的服务器控件,但该页的其余部分只包含文本和在服务器上运行的简单代码,则程序员可以对用户控件执行片段缓存,以改进应用程序的性能。
用户控件与普通网页页面的区别是:●用户控件开始于控件指令而不是页面指令。
●用户控件的文件后缀是.ascx,而不是.aspx。
它的后置代码文件继承于erControl类.事实上,UserControl类和Page类都继承于同一个TemplateControl类,所有它们能够共享很多相同的方法和事件。
4.0 定义控件自定义控件与用户控件不同,自定义控件需要定义一个直接或间接从Control 类派生的类,并重写Render方法。
在.NET框架中,System.Web.UI.Control与System.Web.UI.WebControls.WebControl两个类是服务器控件的基类,并且定义了所有服务器控件共有的属性、方法和事件,其中最为重要的就是包括了控制控件执行生命周期的方法和事件,以及ID等共有属性。
1.创建项目使用自定义Label控件的代码,Web Control Library模板中默认包括该控件。
该控件是从Web Control类派生的,其行为与标准的Label控件相同,同时具有添加的属性将Text属性的值呈现为超级链接。
例如,在【文件】菜单中,执行【新建项目】命令,并弹出【新建项目】对话框,如图8-8所示。
在【模板】窗格中,选择Web选项,并在右侧选择【服务器控件】选项。
然后,将【名称】更改为Control,并单击【确定】按钮。
图8-8 自定义控件2.添加类控件在【解决方案资源管理器】中,右击项目文件,并执行【添加】|【新建项】命令,如图8-9所示。
图8-9 添加新项在弹出的【添加新项-Control】窗口中,选择【Visual C#项】模板,并选择【类】选项。
然后,修改【名称】为Address.cs,并单击【添加】按钮,如图8-10所示。
图8-10 添加类文件此时,在Address.cs文件中,添加一些地址的属性内容。
例如,城市名称、邮政编码、国籍等等。
现代码内容。
代码编写完成后,可以编译控件。
其实,编译控件的方法非常简单,如分别选择Address.cs和Custom.cs文件,并执行【生成】|【生成Control】命令,如图8-11所示。
图8-11 生成Control类3.将控件添加到工具箱生成Control类之后,可以将该类文件添加到工具箱中。
这样用户可以像使用工具栏中的控件一样,直接引用到窗体页中。
第 8 章 网页标准控件控件是一种类,绝大多数控件都具有可视的界面,能够在程序运行中显示出其外观。
利 用控件进行可视化设计既直观又方便,可以实现“所见即所得”(What You See Is What You Get, 简称为 WYSIWYG)的效果。
程序设计的主要内容是选择和设置控件以及对控件的事件 编写处理代码。
本章将介绍网页中最常用的几个标准网页控件。
目的在于学会这些常用控件的使用方 法。
其他控件在后续的章节中介绍。
8.1 网页中的控件类型 的类库中包括大量的控件,根据功能可以将它们分成以下几种类型。
标准控件:这些控件属于服务器控件。
除窗体页中常用的按钮、文本框等控件以外,还 有一些特殊用途的控件,例如,显示日历的控件等。
网页标准控件与 HTML 元素标记之间 不存在一对一的对应关系。
验证控件:用于检验用户的输入。
例如,验证是否缺少必须填入的字段;输入的数据格 式是否符合要求;输入的数据是否在指定的范围内等。
用户控件及自定义控件: 这些控件都是由程序设计者自行定义的控件, 是对系统控件的 扩展。
用户控件可以在项目内不同网页中重复使用,从而提高了程序设计的效率,同时还能 使各网页的显示风格一致。
HTML 控件:默认情况下它属于客户端(浏览器端)控件,但也可以将其转换成服务器端 控件。
每个控件对应于一个 HTML 元素的标记。
数据源控件 这类控件可以针对各种数据源实现数据绑定功能, 这包括微软的 SQL Server 和 Access, 以及其他关系型数据库、XML 文件和代码中实现的类。
数据视图控件 这类控件呈现为各种列表和表格,它们可以绑定到数据源以显示和编辑数据。
个性化控件 这类控件允许用户个性化地展示自己的站点, 包括重新调整网页本身等。
用户信息会被 自动地、透明地保存,并从一个会话持续到下一个会话。
登录控件和安全控件 这类控件实现站点中的普通登录功能,并维护用户的密码。
用户控件的应用本节主要学习用户控件的工作原理、如何创建用户控件以及如何向 网页添加用户控件的信息。
本节内容 用户控件概述如何:将Web 窗体页转换为 用户控件如何:在 网页中包括用户控件如何: 用户控件的实例,用实例详细说明如何使用用户控件用户控件概述在前面的教学示例中使用了,提供的标准控件。
毫无疑问,提供了相当丰富的控件。
但是,有时候这些控件还不能满足实际业务功能的要求。
在这种情况下,就可以使用开发具有所有自定义功能的新控件,本节我们学习如何在创建这些控件。
主要学习用户控件及应用。
自定义控件下节学习。
用户控件和自定义控件的优点在开始创建这些Web控件之前,有必要了解他们的用处。
正如类的构建是为了代码重用性,重用现有用户控件也很必要。
例如,如果不提供控件,那么即使是网页/窗体上的一个文本框也需要编码。
TexTbox控件虽小,但为网页开发人员节省了数小时的重复工作时间。
既然这样一种简单的控件能有如此强大的可重用效果,可以想象如果能够重用向DataGrid这样的复合控件,其帮助作用会有多大。
显而易见,用户控件和自定义控件有助于可视化能力和功能能力的可重用性,还有助于软件封装和分布这些功能。
用户控件是可重用的。
可重用控件用两种方式创建,第一个而且是最简单的方法就如同创建一个页面一样。
这种控件成为用户控件。
这些控件可简单地重用现有的 Web控件和HTML元素创建,生成一个ascx文件。
第二种方法是使用C#创建完成自定义的控件,这种控件叫自定义控件。
用户控件和自定义控件的差别●用户控件用.ascx文件表示。
它不是编译代码,便以随网页动态的进行,自定义控件被编译在DLL文件中,是编译代码。
●用户控件不会出现在工具箱中,而自定义控价会出现在工具箱中。
●用户控件支持缓存,而自定义控件不支持缓存。
●用户控件会对使用可视化设计工具的用户提供有限的支持,而自定义控件控件会提供全面的支持。
什么时候使用用户控件一般地,当内容在逻辑上可组合在一起,而且又有可能要在多处使用时,使用用户控件。
用户控件和自定义服务器控件在 中,系统自带的服务器控件为应用程序开发提供了诸多便利。
在应用程序开发中,许多功能都需要重复使用,而如果在应用程序开发中重复的编写类似的代码是非常没有必要的。
让开发人员可以自行开发用户控件以提升代码的复用性。
提供了两种选择:(1)用户控件(2)自定义控件一、用户控件1、什么是用户控件用户控件使开发人员能够根据应用程序的需求,方便的定义和编写控件。
开发所使用的编程技术将与编写Web 窗体的技术相同,只要开发人员对控件进行修改,就可以将使用该控件的页面的所有控件都进行更改。
(1)用户控件的文件扩展名为.ascx,而不是.aspx。
(2)用户控件中没有@Page指令,而是包含@Control指令,该指令对配置及其他属性进行定义。
(3)用户控件不能作为独立文件运行。
而必须像处理任何控件一样,将它们添加到窗体中。
(4)用户控件中没有html、body或form元素。
这些元素必须位于宿主页中。
2、编写一个简单的控件项创建一个用户控件,如图1所示。
图1 创建用户控件用户控件创建完毕后,会生成一个.ascx 页面。
.ascx 页面结构同.aspx 页面基本没有什么区别。
在解决方案管理器中可以打开.aspx页面和.ascx页面进行对比,其结构并没有太大的变化。
用户控件中并没有“<html><body>”等标记,因为.ascx 页面作为控件被引用到其他页面,引用的页面(如.aspx 页面)其中已经包含<body><html>等标记。
而如果控件中使用这样的标记,可能会造成页面布局混乱。
用户控件创建完成后,.ascx 页面代码如下所示。
其中没有任何的“<body><html>”等标记,而.ascx.cs 页面代码基本同.aspx 相同,示例代码如下所示。
图2 Default.aspx.cs页面内容图3 myControl.aspx.cs页面内容用户控件能够提高复用性,前面介绍的服务器控件,从很多情况下来说都可以看作是用户控件的一种。
c#⽤户控件,usercontrol,⾃定义控件属性1、2、拖动添加:画⾯上如需多个usercontrol,添加TableLayoutPanel,然后在⼯具箱中找到usercontrol,拖到相应框中3、代码添加:主窗⼝中有多个Tab选项卡,可以将每个Tab选项卡的视图独⽴成⼀个UserControl,通过⼿动添加【C#】UserControl⽤法// 与Form的设计类似,只是继承⾃UserControlnamespace Demo.Views{public partial class PrintPanel : UserControl{public PrintPanel(){InitializeComponent();}......}}namespace Demo{public partial class Main : Form{private PrintPanel printPanel;public Main(){......printPanel = new PrintPanel();printPanel.Dock = DockStyle.Fill;tab1.Controls.Add(printPanel);......}}}⾃定义属性设置后在主窗体,选择⾃定义控件时,在属性窗体界⾯,可以看到设置的属性。
category设定的是属性在属性⾯板上显⽰的类别,当使⽤了类别时,组件属性和事件可以按逻辑分组显⽰在属性浏览器中。
Category("Appearance")就可以把属性从杂项转移到外观。
[Category("⾃定义"), Browsable(true), Description("当前重量")]public int CurWgt{get => m_CurWgt;set{this.m_CurWgt = value;PubTool.UIInvoke.SetLabel(this.lbl_CurWgt, value.ToString("0"));}}Browsable 是否显⽰在属性栏内Category 在属性栏中显⽰的分组名Description:功能介绍,如Description("选项框的颜⾊")],当在属性设置窗⼝编辑该属性时,在属性浏览器底部将显⽰该属性的功能介绍;。
Silverlight 用户控件与自定义控件详解在Silverlight中你如果想把UI封装成单独的一部分或者创建一个新的页面,你可能会在Visual Studio中通过右击“项目-> 添加-> 添加新项->Silverlight用户控件”这样来创建控件。
如果你是这么做的,那么这篇文章非常适合你。
它将适用于任何基于XAML技术:WPF、silverlight、Windows Phone 和Windows 8 Runtime。
尽管用户控件很棒,它们能快速的拼在一起,或一次又一次的重复使用,这是它们的很大一个价值所在。
但是如果我告诉你还有另一种控件类型,具有干净的代码、更强大性能更好,而且比用户控件的方式更加灵活、重复的使用,那它将会是大量开发人员的最爱吗?其实这个你早就知道,因为你已经一直在使用他们:Button、ListBox、ItemsControls、Grid、StackPanel等。
你可以查看Xaml Style彻底改变控件的外观和体验,而不触及任何代码。
这是多么强大的想法,看看下面一个Silverlight ListBox 行星DEMO 。
在左边,你会看到一个绑定了行星名单的ListBox。
在右边,你能看到一个太阳系,但事实上,这也是一个ListBox。
这里没有涉及到额外的代码,完全是由修改Template达到效果。
你可以按上下键,它有正常ListBox的功能。
让我重复一遍:做到这一点我没有添加任何后台代码到ListBox。
事实上,该页面后台代码完全是空的。
如果你不相信,这里有源码下载解剖用户控件首先,让我们解剖一个典型的用户控件看看,充分了解下它是怎么工作的这是关键。
在下面我们控件中一部分XAML确定了布局,为了保持它是一个简单的例子,里有只一个Grid和一个Button。
1<UserControl x:Class="MyApp.SilverlightControl1"2 xmlns="/winfx/2006/xaml/presentation"3 xmlns:x="/winfx/2006/xaml">45<Grid x:Name="LayoutRoot" Background="White">6<Button Content="Click Me" Click="Button_Click" Opacity=".5"/>7</Grid>8</UserControl>我们控件的后台代码:1using System.Windows;2using System.Windows.Controls;3using System.Windows.Media;45namespace SolarSystemRetemplate6 {7public partial class SilverlightControl1 : UserControl8 {9public SilverlightControl1()10 {11 InitializeComponent();12 }1314private void Button_Click(object sender, RoutedEventArgs e)15 {16 LayoutRoot.Background = new SolidColorBrush(Colors.Red);17 }18 }19 }这里有两个地方值得注意:”LayoutRoot”是在XAML中使用X:Name定义的,我们在后台代码中通过这个名字自动获取了这个变量。
编号题型难度技术方向知识点题目10001问答题算内存容量大小(根据内存地址)10002问答题二叉树的排序(前序、后序、中序)10003问答题通讯协议的相关知识(TCP/IP、HTTP等10004问答题基本的SELECT语句10005问答题What does the ThreadStaticattribute do?10006问答题 Does C# support multipleinheritance?10007问答题C# provides, by default aparameterless constructor.10008问答题What’s the differencebetween an interface and 10009问答题What’s the differencebetween deep copy and10010问答题If an exception is throwninside a catch block, will 10011问答题What’s the differencebetween Debug and Trace 10012问答题 What’s the final result?(下面这段代码的最终运行结10013问答题 What is the role of theDataReader class in10014问答题Can a struct inherit fromanother struct?10015问答题Can a struct inherit fromanother class?10016问答题Can a struct be the baseof another class?10017问答题Can a struct implement aninterface?10018问答题What’s the differencebetween struct and class?10019问答题如何选择使用结构还是类10020问答题说出你对remoting 和webservice的理解和应用10021问答题的身份验证方式有哪些,原理是什么?10022问答题 如何实现一个自定义类的序列化10023问答题3、 怎样实现无对话框的文件下载10024问答题5、 Hashtable 添加内容的方式有哪几种,有什么区别?10025问答题6、 试用客户端脚本实现“全选“的功能,即把页面的所有10026问答题7、 不通过HtmlInputFile之类的10027问答题8、 写出程序运行的结果Public class Base10028问答题接口和抽象类的区别?10029问答题解释DataSet(ds) 和 ds as DataSet 的含义10030问答题WebService是什么意思?什么情况下用WebService?10031问答题中内置对象是什么?10032问答题OLEDBConnection 和SQLConnection 有什10033问答题 6. 采用怎样的方法保证数据的完整性?10034问答题application与session的区别10035问答题用javascript写一个脚本,以确认用户输入10036问答题viewstate的用法以及button的causevalide的作用10037问答题 5. 说出一到两个你写过的自定义控件以及他的作用,并说10038问答题 6. XML的XSLT的用法10039问答题7. 数据流有什么要素10040选择题 (1).在对SQL Server 数据库操作时应选用(A )。
用户控件和自定义控件的异同
丁桂娟
【期刊名称】《黑龙江科技信息》
【年(卷),期】2009(0)18
【摘要】着重介绍了组件、控件、户控件和自定义控件的基本概念,以及用户控件和自定义控件在实际应用方面的差异比较.
【总页数】1页(P65)
【作者】丁桂娟
【作者单位】黑龙江大学网络管理中心,黑龙江,哈尔滨,150000
【正文语种】中文
【中图分类】TP311.52
【相关文献】
1.一种在中使用Web用户控件的方法 [J], 李商旭;
用户控件的使用在应用开发中的应用 [J], 黄汉堂;汪洁
中WEB用户控件和自定义控件辨析 [J], 任海科
4.一种在中使用Web用户控件的方法 [J], 李商旭
5.用户控件在网站开发登陆模块中的技术研究 [J], 许晓萍;
因版权原因,仅展示原文概要,查看原文内容请购买。
用户控件和自定义控件的定义的区别
(一).用户控件和自定义控件概述
用户控件(UserControl): 扩展名为*.ascx,跟*.aspx 在结构上相似,是指页面中
加载的功能块,只是用户控件不能单独作为页面运行,必须嵌入到*.aspx页面或其它用
户控件中使用.
自定义控件,跟HtmlControl或WebControl相似,编译后可以添加引用到工具栏里
面,直接用鼠标拖动使用.
(二).使用
在一个大系统中,有时候会只能几个*.aspx页面,其余的都是做成*.ascx页面,
这样可以增强页面之间的藕合性,一个用户控件*.ascx都作为一个独立的功能块.
自定义控件是指编译后直接可以放到工具箱中用,就像TextBox,DataGrid一样
在设计器中可以用鼠标拖动到页面上使用.
自定义服务器控件分为两种:
1.一种是用*.aspx代码和*.cs代码编译后
生成DLL,再添加引用到工具箱使用.
一般用于WebForm中.
2.另一种是只用*.cs实现,再编译生成DLL,添加到工具箱使用.
一般用于WinForm中.
自定义控件生成步骤:
比如:
1. 将一个Button从设计器拖到页面中,
对按钮大小,颜色或文本设置一个固定值,保存文件名为: a.cs
2. csc /r:System.dll
/t:library/out:..\..\A.dll a.cs
3. 右击工具箱空白处,弹出右击菜单后,选“添加移除项”,将刚生成的DLL
添加到工具箱里面来,这样,就可以像一般的Button一样拖动使用了。