C#控件与组件

      控件就是组件。控件通常是指设计时所见即所得、运行时处理图形显示和接受用户交互输入的那些组件。当你开发一个组件,你需要从具有丰富的界面和交互机制的父类去继承,那么你做出来的当然就是控件了。

    如果你发觉根本不需要继承那写交互机制,只要继承更高层的,那么你就不是在开发控件了(那么当然也还是在开发组件)
比如许多入门书上叫做“Timer控件”的这个东西,如果你看源代码,它仅仅是组件,它没有继承控件父类接口才实现的有关“绘制界面、捕获用户焦点、支持拖放、返回windows窗口句柄、窗口线程切换、支捕获用户按键、坐标位置、改变大小、设置前景和背景颜色、设置可见性”等等功能。如果你开发一个组件,他不需要这些功能,而你从控件父类来继承设计,那么显然是画蛇添足了,由于实现有一堆自己根本不支持的功能方法接口,于是违反了面向对象设计的设计原则。

   .net的组件概念,基本上就是指可以支持在vs设计窗体上拖入、编程的类。所以它跟随便一个类也还是有区别。组件概念就好像是给普通类放上去特定的接口、或者特定的Attribute。只要非常重要,细微之处也可以自成体系。组件类非常简单,几乎没有内容,可是它是规定,vs等开发IDE环境就认识从组件类继承的子类、而不支持不从组件类继承的子类。

        组件是指可重复使用并且可以和其他对象进行交互的对象组件(component)是靠类实现的。控件是能够提供用户界面接口(UI)功能的组件。换句话说就是,控件是具有用户界面功能的组件所有控件肯定都是组件,但并不是每个组件都一定是控件
        控件分为:复合、扩展和自定义三类。
    复合控件是封装在公共容器内的Windows窗体控件的集合。这种控件有时称为“用户控件”,包含的控件称为“构成控件”。复合控件包含与每个包含的Windows窗体控件相关联的所有固有功能,允许有选择地公开和绑定它们的属性。复合控件还提供了大量的默认键盘处理功能,不需要任何额外的开发。复合控件从UserControl类派生而来。

  扩展控件是从任何现有的Windows窗体控件或者自定义控件导出的继承控件。它保留Windows窗体控件的所有固有功能,然后通过添加自定义属性、方法或其他功能扩展此固有功能。可以使用此选项重写基控件的绘制逻辑,然后更改该控件的外观以扩展其用户界面。 http://itkeys.cn/

  创建控件的另一种方法是通过从Control继承从头开始创建一个控件。Control类提供控件所需的所有基本功能(包括鼠标和键盘处理事件),但不提供控件特定的功能或图形界面。若要实现自定义控件,必须编写该控件的OnPaint事件的代码,以及所需的任何功能特定的代码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

皮特大熊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值