c# 中的UserControl是什么 用户控件和自定义控件有什么区别
用户控件是许多控件的集成
自定义控件是自己写一个控件类,或者继承已有的控件类
复合控件是封装在公共容器内的 Windows 窗体控件的集合。这种控件有时称为“用户控件”。包含的控件称为“构成控件”。
复合控件包含与每个包含的 Windows 窗体控件相关联的所有固有功能,允许您有选择地公开和绑定它们的属性。复合控件还提供了大量的默认键盘处理功能,您不需要任何额外的开发。
====================================
自定义控件
创建控件的另一种方法是通过从 Control 继承从头开始创建一个控件。Control 类提供控件所需的所有基本功能(包括鼠标和键盘处理事件),但不提供控件特定的功能或图形界面。
与通过从 UserControl 或现有 Windows 窗体控件继承创建控件相比,通过从 Control 类继承创建控件需要耗费更多的心思和精力。由于大量的实现将留给您进行,因此,您的控件可以具有比复合控件或扩展控件更大的灵活性,而且您可以使控件完全满足自己的需要。
作为创建控件的起点,有两个类分别用于不同的情况。理解这两个类的结构,有助于确定什么场合应使用哪个类。
1、Control类
Control类包含在System.Windows.Forms名称空间中,其基本功能包括:在屏幕上定义一个矩形区域,给它提供一个句柄,处理常规的系统消息。这样,Control类就可以处理用户通过键盘和鼠标输入的信息。Control类可以用作组件的基类,这些组件需要在Win32类型的图形界面上可视化地显示出来。除了内置控件和从Control类派生的控件外,Form类归根结底也是从Control类派生的。
除了这些低层次的窗口显示功能之外,Control类也包含像Font、ForeColor、BackColor和BackGroundImage这种与可视化有关的属性。Control类还有其他用于管理控件在窗体上的布局的属性,例如Docking属性和Anchoring属性。
Control类不包含任何在屏幕上显示的逻辑,但可以指定背景色或显示背景图像。它不包含任何输入处理逻辑,但提供了对键盘和鼠标的访问,可以生成标准的控件事件,如Click和KeyPress。开发人员在根据Control类创建自定义控件时,除了Control类提供的基本功能之外,还必须提供所有这些功能。
Control类提供了一组标准的事件,包括单击(Click、DoubleClick)事件、按键事件(KeyUp、KeyPress、KeyDown)、鼠标事件(MouseUp、MouseHover、MouseDown等)以及处理拖放操作的事件(DragEnter、DragOver、DragLeave、DragDrop)。另外,还有管理控件中焦点和验证的标准事件(GotFocus、Validating、Validated)。
2、UserControl类
对于从头创建的控件来说,Control类的内置功能是很重要的基础,这些新控件带有自己的显示和键盘处理逻辑。然而,Control类不用作其他控件的容器。
这意味着复合控件不能使用Control类作为起点。复合控件组合两个或两个以上的现有控件,因而起点必须是能管理被包含的控件。满足这种需求的类是UserControl。因为它最终从Control类派生,所以具有该类的所有属性、方法和事件。
然而,UserControl类并不直接从Control类派生。它从ContainerControl类派生,ContainerControl类从ScrollableControl类派生。
顾名思义,ScrollableControl类支持滚动控件窗口的客户区。这个类中几乎所有的成员都与滚动相关。例如,AutoScroll用于打开或关闭滚动,像AutoScrollPosition这样的控制属性用于获取和设置可滚动区域中的位置。
ContainerControl类从ScrollableControl派生,并增加了支持和管理子控件的功能。它管理焦点和控件之间的跳转能力。它的属性有ActiveControl,用于指向带焦点的控件;以及Validate,用于验证最近修改的、没有引发其验证事件的控件。
ScrollableControl和ContainerControl通常都不能直接继承。但它们增加的功能是其更常用的子类Form和UserControl所需要的。
UserControl类能够包含其他的子控件,但是UserControl的界面不会显示这些子控件。UserControl的界面用于给外面的客户显示一个单独、统一的界面,例如窗体或容器控件。任何需要访问子控件的对象界面必须在自定义控件中实现。
c# 中的UserControl是什么 用户控件和自定义控件有什么区别的更多相关文章
- WPF中用户控件对比自定义控件(UserControl VS CustomControl)
接着这篇文章(http://www.cnblogs.com/shiyue/archive/2013/02/02/2889907.html)写: 用户控件(组合) 用于在一个项目中使用多次 自定义控件( ...
- WPF之路——用户控件对比自定义控件UserControl VS CustomControl)
将多个现有的控件组合成一个可重用的“组”. 由一个XAML文件和一个后台代码文件. 不能使用样式和模板. 继承自UserControl类. 自定义控件(扩展) 在现有的控件上进行扩展,增加一些新的属性 ...
- 如何在Web.config中注册用户控件和自定义控件
问题: 在ASP.NET 的早先版本里,开发人员通过在页面的顶部添加 指令来引入和使用自定义服务器控件和用户控件时,象这样: <%@ Register TagPrefix="scott ...
- Asp.net 用户控件和自定义控件注册
在ASPX页中注册用户控件的方法 <%@ Register Src="ListPicker.ascx" TagName="ListPicker" Tag ...
- 【SharePoint】SharePoint2013中使用客户端对象模型给用户控件赋初值
本文要实现的功能:新建一条列表记录,打开新建记录画面时,自动给[申请人]赋值为当前登录用户. 在SharePoint2010中,可以使用SPServices的SPFindPeoplePicker方法来 ...
- wpf的UserControl用户控件怎么添加到Window窗体中
转载自 http://www.cnblogs.com/shuang121/archive/2013/01/09/2853591.html 我们来新建一个用户控件UserControl1.xaml &l ...
- C# WinForm中添加用户控件
转:https://blog.csdn.net/haelang/article/details/40681003 有的时候我们需要频繁使用一些系统默认工具的组合,那么就可以使用自定义用户控件. 起一个 ...
- ASP.NET MVC 中使用用户控件——转
讲讲怎么在 ASP.NET MVC2中使用用户控件.首先我们新建一个用户控件, 我们命名为SelectGroup.ascx,代码如下 <%@ Control Language="C ...
- 在VisualStudio 工具箱中隐藏用户控件
当我们创建一个用户控件后,VisualStudio会自动将其添加到工具箱中,本来这是一个比较贴心的设计.但是,有的时候,我们并不想将用户控件放到工具箱中. 例如:在WPF中,为了避免一个页面的控件过多 ...
随机推荐
- phpcms v9自定义HTML文件名
用过织梦.Wordpress.Zblog等程序的网友都知道,发布内容的时候可以自定义生成的HTML文件名,这个功能对于SEO来说非常有好 处,但是到了V9之后却很遗憾, 这个功能却没有了,现在你只要对 ...
- 在浏览器中体验 Ubuntu
近日,Canonical将Ubuntu官网中添加了在线导览的功能,你可以在任何地方使用这个Ubuntu 演示版.Ubuntu背后的公司Canonical为 Linux 推广做了很多努力.无论你有多么不 ...
- C#运行原理——我的柔情你永远不懂
记得歌手陈琳曾经在1993年发行了第一张专辑<你的柔情我永远不懂>,创造了150万张的销售纪录,里边的主打歌——我的柔情你永远不懂,多年以后才发现是写给C#运行原理的,因为原理总是伤不起~ ...
- asp 按钮 调用ajax时 会出现返回错误,尽量使用html按钮进行调用
asp 按钮 调用ajax时 会出现返回错误,尽量使用html按钮进行调用
- Git学习笔记四--远程仓库
Git远程仓库 Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上. 怎么分布呢?最早,肯定只有一台机器有一个原始版本库,此后,别的机器可以“克隆”这个原始版本库,而且每台机器的版本 ...
- Android中Native和H5交互
1.概述 时至今日,H5的跨平台性越发凸显优势,一套代码适配android.ios,既能减少开发成本,又便于更新与维护.但是native的性能体验也确实更佳,尤其体现在复杂界面和频繁变化的界面上.事实 ...
- Firefly 性能测试 通报
http://bbs.gameres.com/forum.php?mod=viewthread&tid=220516 Firefly 性能测试 主要考虑点 网络IO的并发 进程间通信压力 数据 ...
- NoSQL数据库介绍(2)
2 NoSQL潮流 在这一章中,将一起讨论NoSQL潮流的动机和主要驱动力.以及NoSQL主张的批评和反馈.本章将通过不同的尝试得出结论来分类和描写叙述NoSQL数据库.当中一个分类法将在随 ...
- TP框架模板中默认值输出
TP框架模板中默认值输出 我们可以给变量输出提供默认值,例如: {$user.nickname|default="这家伙很懒,什么也没留下"} 对系统变量依然可以支持默认值输出,例 ...
- 【Statistics】均值
均值 均值(mean)是全部数据的算术平均值,也称为算术平均.在统计学中具有重要的地位,是集中趋势的主要测量值.均值分为:简单均值.加权均值. 简单均值 设代表均值,代表样本各变量值,n代表变量个数, ...