c#组件和控件的区别,什么时候用组件?什么时候该用控件
一个问题一直困扰着小弟,就是c#中组件和控件的区别,但从visual studio中看表面的区别就是组件不能提供界面,而控件是有设计界面的,根据我在网上查询的资料获知:在编程领域内,组件其实就是一个可以复用并可以和其它对象交互的对象,而控件就是一个提供或实现了图形界面的组件,其实我感觉说的已经挺清楚了,但是我还是理解不透:
1、什么时候应该选择使用组件呢,什么时候选择使用控件呢?毕业论文
2、就组件的可复用来说,用一个普通的类完全可以做到的啊,感觉组件类比普通类稍强一点的地方就是能够做到从vs的工具栏中拖拽到界面上,但是本质还是一个类的引用啊,为什么会出现组件呢?
3、对实现同一个功能,控件是不是比组件耗费内存要多呢?
希望懂的给个提示,小弟是个新手,所以问的问题难免有些肤浅,请大家见谅,谢谢啦,希望能用具体的例子加理论给些指点,我还有还来新手们不胜感激
组件控件都能拖到界面里,组件不能查看设计器,你要想自己弄个能画的控件,就继承UserControl或control
控件paint肯定比组件费时间
其实这个问题非常好回答,关键是你要去看.net的源代码(或者至少是接口)。
当你开发一个组件,你需要从具有丰富的界面和交互机制的父类去继承,那么你做出来的当然就是控件了。
如果你发觉根本不需要继承那写交互机制,只要继承更高层的,那么你就不是在开发控件了(那么当然也还是在开发组件)。
比如许多入门书上叫做“Timer控件”的这个东西,如果你看源代码,它仅仅是组件,它没有继承控件父类接口才实现的有关“绘制界面、捕获用户焦点、支持拖放、返回windows窗口句柄、窗口线程切换、支捕获用户按键、坐标位置、改变大小、设置前景和背景颜色、设置可见性”等等功能。如果你开发一个组件,他不需要这些功能,而你从控件父类来继承设计,那么显然是画蛇添足了,由于实现有一堆自己根本不支持的功能方法接口,于是违反了面向对象设计的设计原则。
net的组件概念,基本上就是指可以支持在vs设计窗体上拖入、编程的类。所以它跟随便一个类也还是有区别。组件概念就好像是给普通类放上去特定的接口、或者特定的Attribute。只要非常重要,细微之处也可以自成体系。组件类非常简单,几乎没有内容,可是它是规定,vs等开发IDE环境就认识从组件类继承的子类、而不支持不从组件类继承的子类。