• 全部
  • VBS
  • .NET技术
  • VBA
  • VB网络编程
  • VB多媒体
  • VB数据库
  • VB控件
  • VB COM/DCOM
  • VB基础类
  • VB API
  • 问答

如果屏蔽掉继承的不需要的属性?

骑车的娃儿 保安  2005-03-06 11:09:23
自己做的控件怎么才能屏蔽继承Control的属性,只留下自己需要的属性?
...全文
97 点赞 收藏 7
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
hamadou 2005-03-06
继承自control类,那么就意味着继承了他所有的属性和方法啊!
应该是做不到吧!呵呵!
回复
骑车的娃儿 2005-03-06
解决了,多谢fangxinggood(JustACoder)兄 的提示
回复
骑车的娃儿 2005-03-06
因为我需要在程序中使用PropertyGrid控件供用户修改属性(这儿不想去用DataGrid),但是真正需要用户修改并且最后要保存的属性只有几个,而其它的属性都用不上,如果不屏蔽,会造成用户的误会。
但是一个一个属性的屏蔽就太麻烦了,属性太多了,哪位高手有更好的解决方案?不胜感激,
回复
骑车的娃儿 2005-03-06
关键不要的属性太多了,真正需要的只有几个,但是又不能不继承。难道只能一个一个的去重写吗?有没有效率高点的方法?
回复
cushat 2005-03-06
把不要的东西从写一下做成private
回复
机器人 2005-03-06
可以通过<Browsable(False)> _ 使继承来的用户自定义控件在【属性】窗口隐藏某些属性。例如,自定义控件不能用作可滚动的容器,因此不应该在【属性】窗口中显示AutoScroll,AutoScrollMargins,AutoScrollPosition和DockPadding items等属性。可以通过隐藏这些基类的属性(Shadows)并添加一个<Browsable(False)>特性来实现:
<Browsable(False)> _
Shadows Property AutoScroll() As Boolean
Get
'并不真正需要委托给内部的用户控件
End Get
Set(Byval Value As Boolean)
'并不真正需要委托给内部的用户控件
End Set
End Property
注意,尽管可以很容易地在【属性】窗口中隐藏一个属性,但是根据继承规则,却不能在自定义控件的编程界面中完全隐藏一个用户控件的属性。然而,可以通过代码使程序在运行时访问该属性时,引发一个异常。
<Browsable(False)> _
Shadows Property AutoScroll() As Boolean
Get
If Not Me.DesignMode Then
Throw New NotImplementedException()
End If
End Get
Set(Byval Value As Boolean)
If Not Me.DesignMode Then
Throw New NotImplementedException()
End If
End Set
End Property
回复
ofei 2005-03-06
这样的话没必要从 Control继承了
回复
相关推荐
发帖
VB
创建于2007-09-28

1.6w+

社区成员

VB技术相关讨论,主要为经典vb,即VB6.0
申请成为版主
帖子事件
创建了帖子
2005-03-06 11:09
社区公告
暂无公告