如何在运行时读出.NET Windows.Forms“设计”属性? (我认为它必须是可能的,因为设计师等正在使用它们。)“设计”属性是GenerateMember
,Locked
和Modifiers
。
EG。我想在运行时读取Modifiers
属性。如果控件被标记为“公共”,我将附加一个工具提示。或者其他什么。
答案 0 :(得分:2)
Locked
属性由ControlDesigner
添加,Modifiers
和GenerateMember
仅在设计时由ModifiersExtenderProvider
添加。
它们不是控件的真正属性,它们只对设计器支持很有用,默认的序列化程序不会生成任何关于它们的代码,因此您无法在运行时看到它们。
例如Locked
对运行时没有任何意义。
关于知道控件是否有成员以及成员是否公开,您可以依靠反思。
示例强>
public bool IsMemberGenerated(string name)
{
var field = this.GetType().GetField(name, System.Reflection.BindingFlags.Public |
System.Reflection.BindingFlags.NonPublic |
System.Reflection.BindingFlags.Instance);
return field != null;
}