WinForm中Component Class、User Control及Custom Control的区别和使用
NET Framework 为您提供了开发和实现新控件的能力。除了常见的用户控件外,现在您会发现,您可以编写能执行自身绘图的自定义控件,甚至还可以通过继承扩展现有控件的功 能。确定创建何种类型的控件可能会费一番功夫。本节重点介绍了各类可继承控件间的区别,同时提供关系到为项目选择的类型的注意事项。
1、 Component Class
Component Class可以从任何现有的 Windows 窗体控件继承产生新的控件。此方法使您得以保留 Windows 窗体控件所有固有功能,然后通过添加自定义属性、方法或其他功能扩展此固有功能。例如,可以创建一个从 TextBox 继承的控件,该控件只接受数字并能自动将输入转换为值。这样的控件可能包含验证代码,每当文本框中的文本发生更改时就会调用此代码,另外,控件还可能有一个附加的“值”属性。在某些控件中,也可以通过重写基类的 OnPaint 方法将自定义外观添加到控件的图形接口上。
处于下列情况时继承 Windows 窗体控件:
- 大多数所需的功能已经与现有的 Windows 窗体控件相同。
- 不需要自定义图形接口,或者想为现有控件设计一个新的图形前端。
2、User Control
用 户控件是封装在公共容器内的 Windows 窗体控件的集合。此容器包含与每个 Windows 窗体控件相关联的所有固有功能,允许您有选择地公开和绑定它们的属性。用户控件的例子之一可能是已生成的显示数据库中客户地址数据的控件。该控件可能包括 几个用来显示字段的文本框,几个用来通过记录定位的按钮 (Button) 控件。可以有选择地公开数据绑定属性,可以将整个控件打包并在应用程序之间重复使用。
处于下列情况时使用 UserControl :
- 要将若干个 Windows 窗体控件的功能合成一个可重新使用的单元。
3、 Custom Control
Custom Control是通过从 Control 继承来完全从头地创建一个控件。Control 类提供控件(例如事件)所需的所有基本功能,但不提供控件特定的功能或图形接口。与通过从用户控件或现有 Windows 窗体控件继承来创建控件相比,通过从 Control 类继承来创建控件需要耗费的心思和精力要多得多。因为作者必须为控件的 OnPaint 事件编写代码以及所需的任何功能特定代码,但同时也允许作者根据自己的需要,灵活地自定义调整控件。时钟控件即是一个自定义控件,它复制模拟时钟的外观和操作,自定义绘图将被调用来促使时钟指针走动,以响应内部计时器组件的 Tick 事件。
处于下列情况时使用Custom Control:
- 想要提供控件的自定义图形化表示形式。
- 需要实现无法从标准控件获得的自定义功能。
WinForm中Component Class、User Control及Custom Control的区别和使用的更多相关文章
- WPF中的Generic.xaml, theme以及custom control
原文:WPF中的Generic.xaml, theme以及custom control 在Visual Studio中创建自定义控件时,所有控件都将添加到/Themes/Generic.xaml. 最 ...
- WinForm中Component Class、User Control及Custom Control的区别和使用建议
reference: http://blog.csdn.net/redstonehe/article/details/1536549 .NET Framework 为您提供了开发和实现新控件的能力.除 ...
- WinForm中Component Class、User Control及Custom Control的区别和使用-转
转http://www.cnblogs.com/jhtchina/archive/2010/11/28/1028591.html NET Framework 为您提供了开发和实现新控件的能力.除了常见 ...
- VS中Component Class、User Control及Custom Control的区别 .
.NET Framework 为您提供了开发和实现新控件的能力.除了常见的用户控件外,现在您会发现,您可以编写能执行自身绘图的自定义控件,甚至还可以通过继承扩展现有控件的功能.确定创建何种类型的控件可 ...
- [转载] Winform中几种好用的Grid Control
转自 博客园 http://www.cnblogs.com/peterzb/archive/2009/05/29/1491781.html 1.DataGridView .net 2.0框架自带的网 ...
- C# WinForm 中Label自动换行 解决方法
在TableLayoutPannel中放着一些Label如果把Label的AutoSize属性设成True的话,文字超过label长度时就会自动增加,直到后面的字出窗体以外设置成False时,一旦到达 ...
- C#中的线程三 (结合ProgressBar学习Control.BeginInvoke)
C#中的线程三(结合ProgressBar学习Control.BeginInvoke) 本篇继上篇转载的关于Control.BeginInvoke的论述之后,再结合一个实例来说明Cotrol.Begi ...
- 在Winform中播放视频等【DotNet,C#】
在项目中遇到过这样的问题,就是如何在Winform中播放视频.当时考察了几种方式,第一种是直接使用Windows Media Player组件,这种最简单:第二种是利用DirectX直接在窗体或者控件 ...
- WinForm中DefWndProc、WndProc与IMessageFilter的区别
这篇文章主要介绍了WinForm中DefWndProc.WndProc与IMessageFilter的区别,较为详细的分析了WinForm的消息处理机制,需要的朋友可以参考下 一般来说,Win ...
随机推荐
- systemd管理服务
[root@zbs-staging-api system]# cat /lib/systemd/system/ncmulti@.service [Unit] Description=many on % ...
- php获取本月、上月、上上月、今日、昨日、上周的起始时间
// 本月起始时间: $begin_time = date ( "Y-m-d H:i:s", mktime ( 0, 0, 0, date ( "m" ), 1 ...
- element-ui switch组件源码分析整理笔记(二)
源码如下: <template> <div class="el-switch" :class="{ 'is-disabled': switchDisab ...
- 浅谈 Event loop (事件循环)
从Event Loop谈JS的运行机制 先来理解一个概念: JS分为同步任务和异步任务 同步任务都在主线程上执行,形成一个执行栈 Execute Content Stack 主线程之外,事件触发线程管 ...
- AngularJS学习之 ngTable 翻页 功能以及利用angular service准备测试数据
1.官网链接 https://github.com/esvit/ng-table#4.0.0 2.安装ngTable后,一定要记得先注册到自己的项目 .module('pttengApp', [ ' ...
- 大数据【一】集群配置及ssh免密认证
八月迷情,这个月会对大数据进行一个快速的了解学习. 一.所需工具简介 首先我是在大数据实验一体机上进行集群管理学习,管理五台实验机,分别为master,slave1,slave2,slave3,cli ...
- hashlib 简单的登录例子
hashlib例子: =============================================== import hashlib md5 = hashlib.md5() md5.up ...
- LeetCode题解之Valid Triangle Number
1.题目描述 2.问题分析 暴力计算 3.代码 int triangleNumber(vector<int>& nums) { ; ) return res; ; i < n ...
- Dictionary CovertTo List
示例代码 假设有如下一个Dictionary 要转换成List Dictionary<string, string> dicNumber = new Dictionary<strin ...
- 怎样在 fedora 28 上 打开 .jnlp 文件
最近使用 iDrac 和 iLO 总是会使用到 .jnlp 文件, 为了方便,今天把设置过程记录下来. JNLP 文件,全名为 Java Network Launching Protocol 文件, ...