繁体   English   中英

在运行时更改.NET属性网格只读属性

[英]Change .NET Property Grid readonly attribute at runtime

我有一个属性网格,我想在运行时更改其某些项目的只读属性。 更改简单项目的只读状态很容易,我在那没有问题,我的问题是我无法更改下图所示纬度和经度等分层项目的只读状态。 我什至尝试将整个“位置”类别设置为只读,但似乎无济于事。

hirarchy

附带问题:是否可以将某些项目放在一个组中(例如此职位项目)而无需将它们包装在类中?

是! 这可能会有所帮助!

public class Member
{
string name;
bool isMarried;
string spouseName;

public string Name
{
get { return name; }
set { name = value; }
}

[System.ComponentModel.RefreshProperties(RefreshProperties.All)]
public bool IsMarried
{
get { return isMarried; }
set
{
isMarried = value;
bool newValue = !value;
PropertyDescriptor descriptor = TypeDescriptor.GetProperties(this.GetType())["SpouseName"];
ReadOnlyAttribute attrib = (ReadOnlyAttribute)descriptor.Attributes[typeof(ReadOnlyAttribute)];
FieldInfo isReadOnly = attrib.GetType().GetField("isReadOnly", BindingFlags.NonPublic | BindingFlags.Instance);
isReadOnly.SetValue(attrib, newValue);
}
}

[ReadOnly(true)]
public string SpouseName
{
get { return spouseName; }
set
{
spouseName = value;
}
}
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM