CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

请大家帮忙,关于自定义控件继承于抽象类得问题!

楼主windsandy(风中飘絮)2006-03-07 10:34:17 在 .NET技术 / C# 提问

我想做一个自定义控件库,所有的自定义控件都要继承于1个接口和一个抽象类,而抽象类继承于UserControl  
  public   abstract     class   AbstractControl:UserControl{}     //抽象类  
  interface   IControlData     //接口  
  public   class   MCDataView   :   AbstractControl,IControlData   {}     //具体的实现控件  
   
  这样写编译能通过,但是双击MCDataView   的时候   出现错误提示"由于继承于抽象类,不能被实例化",而双击AbstractControl   却可以出现设计界面。  
  请问,难道自定义控件不能直接继承于抽象类吗?   如果可以应该怎么避免这个错误?如果不可以,是不是需要在抽象类外面再包一层具体类再继承,或者把所有抽象类全部写成接口?  
  谢谢 问题点数:100、回复次数:8Top

1 楼windsandy(风中飘絮)回复于 2006-03-07 11:06:08 得分 0

哎,怎么没人回,这么快就掉到第二页了,自己顶一下Top

2 楼zhongkeruanjian(编程亮子)回复于 2006-03-07 11:26:48 得分 50

由于继承于抽象类,不能被实例化  
   
  这不明摆的告诉你,继承抽象类的用户类不能出现在设计界面么?那就搞一个具体类,把要实现的方法Virsual吧,  
   
  不过我也不知道为什么Top

3 楼windsandy(风中飘絮)回复于 2006-03-07 13:00:16 得分 0

谢谢回复,如果光是"继承于抽象类,不能被实例化"   我到可以理解,不过既然这样,那为什么抽象类本身却可以出现设计界面呢?Top

4 楼iegrhn(‘)回复于 2006-03-07 13:15:49 得分 50

UserControl本身有界面  
  换成Control就不一样Top

5 楼windsandy(风中飘絮)回复于 2006-03-07 13:23:45 得分 0

也就是说UserControl是具体类,而就算是抽象类继承于UserControl,打开设计界面也只是实例化UserControl   而不是实例化抽象类,所以可以有设计界面,而MCDataView   打开设计界面的时候是实例化AbstractControl   所以不行,谢谢二位得回复   :)Top

6 楼huangkc(软贱&henchman)回复于 2006-03-07 13:29:53 得分 0

"双击AbstractControl   却可以出现设计界面"  
  这是因为系统自动实例化的原因  
   
  用户类继承,就要手动写具体的实例化抽象类  
  也就是其中的方法  
   
  实际可采用,继承系统控件类  
  然后公共的方法可以由接口先定义Top

7 楼lidong6(立冬)回复于 2006-03-07 13:44:33 得分 0

刚才试了一下,没出现楼主的情况.  
  反到是在创建abstract的控件时提示"无法创建抽象类"  
  第二个控件正常.Top

8 楼windsandy(风中飘絮)回复于 2006-03-07 14:40:49 得分 0

实际可采用,继承系统控件类  
  然后公共的方法可以由接口先定义  
   
  开始我是这么做的,但是有2个问题:  
  第一个是   有的自定义控件   是   组合控件,需要用UserControl  
  然后在上面画n个系统控件.  
  第二个是,我想要控制整体控件库的显示风格,需要一个公共父类来解决  
  现在我只能把   原来的抽象类分成   接口和具体类来解决了。Top

相关问题

  • 自定义控件的继承问题
  • 自定义控件继承时出错!!!
  • 自定义控件属性归类
  • 自定义控件 公共属性 返回类 的问题
  • 从TPanel继承来的自定义控件,如何在控件上使用Canvas?
  • 自定义控件里如何传递控件类型的参数 ?
  • 关于自定义控件类与跨进程创建控件的问题?
  • 急!!!!!!!!!!!!!!!!!!!!!!!!!!!!自定义控件中如何取得top,left之类的默认属性
  • 请问 自定义控件中如何写font的各类属性?
  • CB开发,自定义控件时,重置父类virtual function 的写法。。。。

关键词

  • 控件
  • 自定义控件
  • 界面
  • 接口
  • 系统
  • 抽象类
  • 继承
  • abstractcontrol
  • 类
  • 实例化

得分解答快速导航

  • 帖主:windsandy
  • zhongkeruanjian
  • iegrhn

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo