【问题标题】:Visual Studio Property Grid: Accept an empty string for Int propertiesVisual Studio 属性网格:接受 Int 属性的空字符串
【发布时间】:2012-11-02 02:44:59
【问题描述】:

我有一个包含各种值类型(包括整数)的属性网格。一些 int 属性具有 DefaultValueAttribute,指定一个默认值,例如-1.

如果用户输入空字符串,Visual Studio 会提示“属性值无效;'' 无法转换为 Int32”。无论如何将空字符串解释为恢复为默认值?

我们实现了一个自定义的 PropertyDescriptor,但是 SetValue() 方法被调用 VS 转换为对象值类型。

【问题讨论】:

  • 这只是一个猜测——我没有尝试过,也没有研究过。尝试将属性设为int?
  • 谢谢,这可能行得通,但我需要该属性是常规(不可为空)int...

标签: c# visual-studio propertygrid


【解决方案1】:

创建Int32Converter 的派生类并将其附加到您的属性。覆盖其ConvertFrom 方法以插入您想要的行为。最佳情况下,您将使用设置为 PropertyDescriptor 的 DefaultAttribute 以使其可重用。

如果您想查看BaseNumberConverter.ConvertFrom 是如何完成的,请使用反射器工具。

【讨论】:

  • 嗨@nicolas,上面的答案有点难以理解,你有我可以看到的示例代码吗
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-12
相关资源
最近更新 更多