请问如何去掉父类中多余的属性、方法

问题描述

我在编写一个自定义控件,比如继承自PIcturebox。在控件中,主要是我内部使用了picturebox的功能,我希望把其他picturebox自带的公开属性和方法隐藏起来,不让用户看到这些。好方便用户使用。我知道可以privateoverwite同名的方法,但是,我几乎想隐藏所有的picturebox自带的公开属性和方法。如果那么写的话会很麻烦。请高手指教,有好的方法么?

解决方案

解决方案二:
仔细想想情况A:继承picturebox,但只实现很少一部分picturebox的功能剩下的全部要屏蔽掉...情况B:重新写带这些功能的控件,和picturebox没有关系哪一种比较合理?
解决方案三:
1、将picturebox设为private2、定义一些属性,用于公开picturebox的某些属性(通过get访问器)
解决方案四:
赞同2楼。完全没必要去考虑屏蔽。重写一个控件显然更合理
解决方案五:
不要继承picturebox而是在类中实例化一个picturebox然后把picturebox的部分属性暴漏给用户
解决方案六:
你的初衷本来就不是继承,不要蓝用继承这个词儿。
解决方案七:
蓝用->滥用继承是一个设计术语,是有着功能的。继承的目的不是有些人少写几行代码,根本就不是。如果你只想少写几行代码,为什么不组合委派呢?所以先要防止邯郸学步,然后可以学好轻盈的舞蹈。
解决方案八:
classmycalss{privateintnum;publicintNum{get{returnnum;}set{num=value;}}privatestringname;publicstringName{get{returnname;}set{name=value;}}}classtestclass{privatemycalss_myclass;publicintNum{get{return_myclass.Num;}set{_myclass.Num=value;}}}
解决方案九:
感谢楼上的回复。看来是我问题描述的不够清楚。我把问题详细说明一下:我是想写一个WinForm窗体控件,希望暴露给用户的是一些自定义的属性方法,而不显示其他用户用不到的函数。用户需要做的是更改这些属性方法。该控件与其他组件一起完成相应功能。控件内使用了Picturebox的一部分功能,例如前景色,背景色,背景图片,绘制文字,响应鼠标消息等。我又扩展一部分功能,通过各种逻辑关系操作上述内容。因为是窗体上的控件,所以应该继承自Control吧。即使是继承自Control也是一样的问题。用户实例化控件后,控件会带着Control上的各种公开属性和方法,和继承自Picturebox并无太大区别。用户需要在窗体上拖放控件位置和大小,这就涉及到窗体设计器等相关的部分。如果我从头自己写这样的控件,岂不是重复造轮子?我的意思是无论这个控件继承自Control、UserControl还是Picturebox,都会暴露出用户用不到的公开方法属性。另外这是个嵌入式系统,所以我希望尽量高效的方式来实现。楼上诸位的意思是让我什么都不继承,从头写这个控件么?还是有更好方法?请各位不吝赐教。
解决方案十:
你这个控件是给开发人员用的吧,如果你不设置你自定义的属性之类的东东,那么在VS里面这些默认都是在自定义一栏里面的,根本不会和默认Control的部分冲突
解决方案十一:
不用继承方式实现,用聚合方式实现
解决方案十二:
classMyPic{privatePictureBoxpic=newPic;}这样你想让外面看到什么就能看到什么
解决方案十三:
隐藏实现起来肯定是有难度的..你可以考虑在用户修改这些"多余"的属性时提示他们不能修改并取消操作...怎么想都很麻烦...ps:你是想通过反射来显示吗?那在遍历的时候进行筛选就可以了啊..
解决方案十四:
简单来说只要是一个控件(在windows被称之为窗口)那么你说的那些属性必然纯在因为那些是作为一个控件的基本要求windows系统就是这样就算你在代码层面上让他的某个属性“消失”也并不能改变系统为这个控件分配对应的空间就算是你从头写也是一个吊样你真要达到你的目的那你就别使用控件直接在窗体上绘制而这样的做法就是他不再是一个窗口(控件)而是一个类那么vs也不会给他窗体设计器的界面也就是说你也没有办法通过属性窗口去修改属性什么的这并不是一个简单的做法我实在是不明白有那些多余的属性怎么了难道说你窗体上多一个按钮和少一个按钮会让你的程序有很大的效率变化?。。我只能说这仿佛是在逗我说不定你程序某些地方代码所产生的空间都比一个control大如果说windows仅仅是因为一个control有太多无用(不是无用只是你没用到)的属性而导致效率缓慢连一个系统最基本的ui展示都做不好的话那这个系统估计没法用了

时间: 2024-09-13 12:09:34

请问如何去掉父类中多余的属性、方法的相关文章

java拼接字符串时去掉最后一个多余逗号的方法_java

本文实例讲述了java拼接字符串时去掉最后一个多余逗号的方法.分享给大家供大家参考.具体分析如下: 先看下面这段代码: for (int t = 0; t < memberLen; t++) { memTemp = stafferMap.get(strMember[t]); if(memTemp != null){ memberNames += memTemp + ","; } } 以上的代码,拼接的字符串会多一个",",比如:"str1,str2,

jquery遍历标签中自定义的属性方法_jquery

在开发中我们有时会对html标签添加属性,如何遍历处理? <ul> <li name="li1" sortid="nav_1">aaaaaaa</li> <li name="li1" sortid="nav_2">bbbbbbb</li> <li name="li1" sortid="nav_3">cccccccc&

shell去掉文件中空行(空白行)的方法详解_linux shell

本文详细介绍了使用shell去除文件中的空行的方法,学习下sed.awk.shell文件检测的方法,有需要的朋友可以作个参考. 本节内容:shell去掉文件中空行 1,shell 去掉文件中的空行 复制代码 代码如下: cat filename | sed -e '/^$/d' > filename 2,保留最新的9个文件,其它的文件删除的命令语句 复制代码 代码如下: ls -t | awk '{if(NR>9){print $0}}' |xargs rm -f 附,shell中的特殊变量

java如何调用父类的父类中被覆盖的方法

问题描述 在类A中调用A的父类B中被覆盖的方法method用的是super.method():那当B的父类C中也有一个和A.B同名的方法method时,在类A中应该如何调用C的该方法呢?请各位指教. 解决方案 解决方案二:在类B写方法method2调用类C的method,使用类Asuper.method2调用.解决方案三:正常手段不行,可以在B类写super,楼上有人说过.反射肯定可以做到,还可以这样写,参考下,只是个思路.publicclassAextendsB{publicvoidtest(

如何用Photoshop去掉照片中多余的人物?

  拍照的过程中难免出现路人甲,或是移不走.有碍观瞻的杂物,拍摄当时避免不了,只好后制时再来修补.大部份的Photoshop教学,都是教导如何使用「仿制印章工具」来清除杂物,不过如果能再配合使用「修补工具」,那就更完美了. •SETP 1 这张照片是用鱼眼镜头所拍摄的,我蛮喜欢它独特的变形和延伸感.无奈后面出现了一个路人.虽然她走路姿态也算优雅,我还是想把她清除.放大来看,路人的背后一半是树木,一半是路面,只能用「仿制印章工具」来处理. •SETP 2 从左边的工具列中选取「仿制印章工具」,上方

如何去掉sourcesafe中的链接属性

问题描述 各位大侠,我现在希望把一个系统重新改造成新的系统(只是部分改造),就将原系统代码复制粘贴到其他地方,但是双击发现还是与在sourcesafe的原系统相关联,请问该如何是好? 解决方案 解决方案二:先在VS2005里打开项目,然后解除源代码管理再添加到源代码管理,此时指向新的SourceSafe就好了.

DHTML初学者指南:DHTML中重要的属性方法

dhtml|初学 由于DOM(文档对象模型)概念的推出,这个API使HTML如虎添翼,但是有些学DHTML的朋友还是有些困挠,只是因为目前的手册的书写不太科学,是按字母来分的,不便查阅.其实DOM中最关键是要掌握节点与节点之间的关系(between node and node),想学习DHTML中的DOM千万不要从头到尾地看遍所有的属性和方法,你有三国时张松的"过目不忘"的本领吗?没有吧,那就听我分析一下: 其实DOM教给我们的就是一个层次结构,你可以理解为一个树形结构,就像我们的目录

DHTML中重要的属性方法

由于DOM(文档对象模型)概念的推出,这个API使HTML如虎添翼,但是有些学DHTML的朋友还是有些困挠,只是因为目前的手册的书写不太科学,是按字母来分的,不便查阅.其实DOM中最关键是要掌握节点与节点之间的关系(between node and node),想学习DHTML中的DOM千万不要从头到尾地看遍所有的属性和方法,你有三国时张松的"过目不忘"的本领吗?没有吧,那就听我分析一下: 其实DOM教给我们的就是一个层次结构,你可以理解为一个树形结构,就像我们的目录一样,一个根目录,

python去掉字符串中重复字符的方法_python

复制代码 代码如下: If order does not matter, you can use "".join(set(foo))set() will create a set of unique letters in the string, and "".join() will join the letters back to a string in arbitrary order. If order does matter, you can use colle