Discuz!NT
欢迎 游客 , 注册 | 登录 | 会员 | 界面 | 简洁版本 | 在线 | 帮助
商都网教育宝典宝库

发表新主题 回复该主题
本主题被查看903次, 共1个帖子, 1页, 当前为第1页     选择页数: 1      跳转到第   上一主题   下一主题
标题: 通过反射取设计画面里面控件的特殊属性问题
张小峰
超级版主
UID: 14
来自:
精华: 4
积分: 313
帖子: 285
注册: 2007-8-23 10:27:00
状态: 离线
威望: 8.00
金钱: 75.55 元
只看楼主 2007-09-24 08:54
通过反射取设计画面里面控件的特殊属性问题
通过反射取属性列表,相信大家都知道。
System.ComponentModel.TypeDescriptor.GetProperties
我们看到在MSDN里面,GetProperties一共有六个重载列表。我们现在只说两个:
(1) GetProperties(componentType As Type)
(2) GetProperties(component As Object)

比如设计画面上面有个TextBox,我们从DesignHost.Container.Components里面把这个TextBox找出来,姑且定义为
c As Component。
然后我们用方法(1) GetProperties(CObj(c).GetType)取属性,一切正常。但是如果把TextBox.Visible在PropertyWindow里面设置为False的话,我们将会看到通过方法(1),我们仍旧只能取到True。
但是如果我们使用方法(2),GetProperties(c),就可以正确取出False。

同样的问题还会出现在Enabled属性上面,但是其它的属性都没有这样的问题。所以我感觉是这两个属性的问题。Visible和Enabled的变化,并没有让Design画面里面的控件发生改变。比如Visible=False,Design画面里面这个控件仍旧是显示的。所以我怀疑通过方法(1)我们只能取得Design画面上面的控件,而通过方法(2)我们得到的才是运行时的控件对象。
#1  
发表新主题 回复该主题
本主题被查看903次, 共1个帖子, 1页, 当前为第1页     选择页数: 1      跳转到第







现在的时间是 2008-10-07 11:59:42

版权所有 商都网教育宝典
         Powered by Discuz!NT 1.0.6666    Copyright © 2001-2008 Comsenz Inc.
Processed in 0 seconds