【发布时间】:2015-07-04 12:55:20
【问题描述】:
这是我目前所做的一个例子:
book enable = false;
foreach (Control c in controlList)
{
if (c is MyTextBox)
{
(c as MyTextBox).Enabled = enable;
}
if...
...
}
除了为每种类型的控件设置多个 if 语句之外,有没有一种方法可以获取控件的类型以便进行强制转换,然后能够访问和设置该控件的属性?
【问题讨论】:
-
Enabled 是 Control 基类的一个属性,所以为什么要强制转换它,只需设置 c.Enabled = enable,除非有其他原因?
-
顺便说一句,我向你保证,使用反射来做这件事会更加冗长。如果您需要转换,您已经验证了类型,因此您应该使用直接转换,而不是“as”运算符,因为它有额外的开销。
-
我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。
标签: c# list reflection properties controls