作为创建控件的起点,有两个类分别用于不同的情况。理解这两个类的结构,有助于确定什么场合应使用哪个类。

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的界面用于给外面的客户显示一个单独、统一的界面,例如窗体或容器控件。任何需要访问子控件的对象界面必须在自定义控件中实现。

winform Control与UserControl的区别相关推荐

  1. [見好就收]NET 2.0 - WinForm Control - DataGridView 编程36计

    原文:http://blog.csdn.net/fangxinggood/archive/2007/04/11/1561011.aspx#A1 NET 2.0 - WinForm Control - ...

  2. c# winform show和showdialog的区别

    winform中show和showdialog的区别 在C#中窗口的显示有两种方式:模态显示(showdialog)和非模态显示(show) 模态与非模态窗体的主要区别是窗体显示的时候是否可以操作其他 ...

  3. Winform中FormClosing与FormClosed区别与使用

    FormClosing与FormClosed事件 都是关闭窗体触发的事件, 区别   FormClosing事件 是在 关闭窗体时发生,用户可以在该事件中 取消关闭,窗体仍然保持打开状态.因此可以在该 ...

  4. Mac系统control,option,command的区别

    option键 相当于Windows的Alt键 command键 相当于Windows的Ctrl键 control键 control键一般用于mac 系统控制的 参考图 参考01:https://ww ...

  5. WinForm与脚本的交互

     这是去年学习SmartClient时写下的,有兴趣可以看看     将Winform Control嵌入IE,很多时候需要JS脚本与Control进行交互.一方面是在脚本中使用控件的属性,调用控件的 ...

  6. (转)WinForm控件使用文章收藏整理完成

    http://home.cnblogs.com/group/topic/29829.html 对C# WinForm开发系列收集的控件使用方面进行整理, 加入了一些文章, 不断补充充实, 完善这方面. ...

  7. C# WinForm控件、自定义控件整理(大全)

    C# WinForm开发系列 - CheckBox/Button/Label/ProgressBar WinForm下CheckedListBox的数据绑定 Winform 下无闪烁走马灯效果实现 c ...

  8. C#中Invoke 和 BeginInvoke 的区别

    Invoke 和 BeginInvoke 的真正涵义 .在多线程中如何调用Winform Control.Invoke 方法 (Delegate) :在拥有此控件的基础窗口句柄的线程上执行指定的委托. ...

  9. WinForm窗体重要属性与公共控件的重要属性

    winform和web的最大区别: web执行C#代码,是在服务器上执行完毕后,将执行完生成的HTML代码返回给客户端 winform所有的代码都是在本地电脑上,所有代码功能的执行都是在本地电脑上,消 ...

最新文章

  1. 网易有道词典笔 —— 73 岁“人类高质量”奶奶梅耶马斯克的中文学习之选
  2. Linux平台Oracle安装脚本
  3. iOS网络传输Delegate不被触发的本质原因
  4. $cfg_dbtype = mysql_Druid连接池二(学习笔记)
  5. 前端php解密,转发:RSA实现JS前端加密,PHP后端解密
  6. 模拟input type=file
  7. 30分钟掌握ES6/ES2015核心内容(上)
  8. 为什么我做数据库类的程序要用代码生成器,而且是前前后后,反反复复 [转]...
  9. 了解和使用DotNetCore和Blazor中的异步编程
  10. 信息图表是如何炼成的之一:媒体使用情况
  11. 虚拟机开机时出现Press ESC in 5 seconds to skip startup.nsh, any other key to continue问题的解决办法
  12. 学习笔记——Servlet原理
  13. python 批量创建文件夹
  14. 技术债务-坏味道、Bug、漏洞
  15. iOS中录屏库ReplayKit的详尽使用总结
  16. 【天勤|数据结构】哈夫曼树
  17. 计算机键盘被锁怎么解,解开电脑键盘锁的小窍门
  18. 育人才,促就业!全国高等学校民航服务技能大赛吸引广泛关注
  19. 五、Scikit-learn的应用-为CHarityML寻找捐献者
  20. 通俗易懂超有爱的并查集~~~

热门文章

  1. python科学计算环境配置_ATLAS + NumPy + SciPy + Theano 的Python科学计算环境搭建
  2. 垃圾小白羊leetcode刷题记录1
  3. Kubernetes如何被应用在华为
  4. 带库的pydroid安装与使用。
  5. 计算机任务驱动法教学应用,_任务驱动法_在计算机基础教学中的应用
  6. 2019年数学建模C题
  7. 治理企业“数据悬河”,阿里云DataWorks全链路数据治理新品发布
  8. Redis的RDB与AOF持久化机制
  9. 多个约束的lagrange multiplier证明.
  10. 数学的意义——席南华院士科普讲座实录