c#-.NET PropertyGrid:使用ExpandableObjectConverter更改复杂对象的读/写权限
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c#-.NET PropertyGrid:使用ExpandableObjectConverter更改复杂对象的读/写权限,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1942字,纯文字阅读大概需要3分钟。
内容图文
![c#-.NET PropertyGrid:使用ExpandableObjectConverter更改复杂对象的读/写权限](/upload/InfoBanner/zyjiaocheng/674/3f84e7807c334cc8a50003f5da05a7b0.jpg)
我正在尝试在PropertyGrid控件中编辑复杂的对象.我将ExpandableObjectConverter(或需要时我自己的子类)添加为TypeConverter,并且工作正常.
我似乎无法弄清的一件事就是这个.在网格中,对象本身将在其旁边具有其.ToString()表示形式.然后,当我展开对象时,属性具有相同的属性.所有都可以编辑.我想禁用ToString()对象字段的编辑,但保持属性可编辑.
因此,在PropertyGrid中,它看起来像这样;
+ Color {(R,G,B,A) = (255,255,255,255)} --uneditable
Alpha 255 --editable
Blue 255 --editable
Green 255 --editable
Red 255 --editable
到目前为止,我还没有找到一种方法来做到这一点.如果我尝试将其设置为ReadOnly,则整个对象将变为只读.如果我指定我自己的ExpandableObjectConverter并声明它不能从字符串转换,如果在PropertyGrid中编辑了字符串,它将仍然尝试强制转换然后失败.
我本质上只是想要它,所以我可以阻止最终用户编辑字符串,而迫使他们编辑各个属性,这样就不必为每个类编写字符串解析器.
这可能吗,或者还有我没想到的另一种方法?
解决方法:
这似乎可以解决问题:
[TypeConverter(typeof (Color.ColorConverter))]
public struct Color
{
private readonly byte alpha, red, green, blue;
public Color(byte alpha, byte red, byte green, byte blue)
{
this.alpha = alpha;
this.red = red;
this.green = green;
this.blue = blue;
}
public byte Alpha { get { return alpha; } }
public byte Red { get { return red; } }
public byte Green { get { return green; } }
public byte Blue { get { return blue; } }
public override string ToString()
{
return string.Format("{{(R,G,B,A) = ({0},{1},{2},{3})}}", Red, Green, Blue, Alpha);
}
private class ColorConverter : ExpandableObjectConverter
{
public override bool GetCreateInstanceSupported(ITypeDescriptorContext context)
{
return true;
}
public override object CreateInstance(ITypeDescriptorContext context, IDictionary propertyValues)
{
return new Color((byte)propertyValues["Alpha"], (byte)propertyValues["Red"],
(byte) propertyValues["Green"], (byte) propertyValues["Blue"]);
}
}
}
内容总结
以上是互联网集市为您收集整理的c#-.NET PropertyGrid:使用ExpandableObjectConverter更改复杂对象的读/写权限全部内容,希望文章能够帮你解决c#-.NET PropertyGrid:使用ExpandableObjectConverter更改复杂对象的读/写权限所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。