gpt4 book ai didi

C# Propertygrid 属性可为空

转载 作者:太空宇宙 更新时间:2023-11-03 11:47:18 27 4
gpt4 key购买 nike

在 C# (.Net 2.0) 的一个项目中,我使用了一个 propertygrid。此属性网格显示通过 SOAP 从 PHP 后端检索的对象。某些对象包含字符串属性,其中空字符串的含义与 NULL 字符串的含义不同。 SOAP 调用返回的对象示例可能是:

SomeObject {
PropertyA = "Foo"
PropertyB = "Bar"
PropertyC = Null
}

只要我不“触摸”PropertyGrid 中的 PropertyC,PropertyC 的值就会保持为空。当我输入“foobar”作为值,然后清除 PropertyC 的属性网格中的文本时,该值将等于一个空字符串。这对我来说很好;用户应该能够“输入”一个空字符串。但我也希望用户能够指定一个“空”值。

我设想的方式是,用户可以右键单击该属性的值,然后会弹出一个上下文菜单,其中包含“清除值”选项,该选项会将值设置为 Null。

重要:不想使用像string“Null”或“Magix123”这样的“魔法值”来指定值必须为空。当然,后端可以解释这些值并存储一个实际的空值,但这个“解决方案”除了很脏之外,是不需要的,因为它需要在处理“魔法值”的地方更改大量代码。

理想情况下,PropertyGrid 还将空值显示为(“灰色”)“”,以便用户可以看到空字符串和 Null 值之间的区别。

有人知道如何处理这种情况吗? (.Net 2.0!) PropertyGrid 允许我做这种事情吗?那我该怎么办呢?我是否需要创建我自己的从 PropertyGrid 派生的用户控件,或者 PropertyGrid 是否有一些我错过的功能?

最佳答案

添加 DefaultValueAttribute具有默认值 null 的属性应该在上下文菜单中启用命令 Reset。为了进一步定制,您可能需要添加 EditorAttribute并写一个自定义 UITypeEditor .

关于C# Propertygrid 属性可为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3092903/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com