【发布时间】:2010-06-22 12:10:18
【问题描述】:
在 C# (.Net 2.0) 的一个项目中,我使用了 propertygrid。此属性网格显示通过 SOAP 从 PHP 后端检索到的对象。某些对象包含字符串属性,其中空字符串的含义与 NULL 字符串的含义不同。 SOAP 调用返回的对象示例可能是:
SomeObject {
PropertyA = "Foo"
PropertyB = "Bar"
PropertyC = Null
}
只要我不在 PropertyGrid 中“触摸”PropertyC,PropertyC 的值就会保持为空。当我输入“foobar”作为值,然后清除 PropertyC 的属性网格中的文本时,该值将等于一个空字符串。这对我来说很好;用户应该能够“输入”一个空字符串。但我也希望用户能够指定一个“null”值。
我设想的方式是,用户可以右键单击属性的值,然后会弹出一个带有“清除值”选项的上下文菜单,该选项会将值设置为 Null。
重要提示:我确实不想使用像 string“Null”或“Magix123”这样的“神奇值”来指定值必须为空。当然,后端可以解释这些值并存储一个实际的空值,但是这个“解决方案”除了很脏之外,是不需要的,因为它需要在处理“魔术值”的地方更改大量代码。
理想情况下,PropertyGrid 还将空值显示为 ("grayed") "",以便用户可以看到空字符串和 Null 值之间的区别。
有人知道如何处理这种情况吗? (.Net 2.0!)PropertyGrid 允许我做这种事情吗?那我该怎么办呢?我需要创建自己的从 PropertyGrid 派生的用户控件,还是 PropertyGrid 有一些我错过的功能?
【问题讨论】:
标签: c# user-interface propertygrid