【问题标题】:Propertygrid UIEditor disabling value editing through KeyboardPropertygrid UIEditor 通过键盘禁用值编辑
【发布时间】:2011-08-11 05:29:13
【问题描述】:

我有一个属性网格,它使用 UITypeEditor 来显示一个列表框并选择一个项目。该项目在选择时返回到 proertygrid。但是如何直接禁用对所选项目的编辑,只读选项会阻止它被编辑。

假设我正在从另一个在列表框中显示国家列表的表单更改属性国家。当我选择“阿尔及利亚”并按“确定”时,“阿尔及利亚”会显示在整个国家/地区,但我可以直接将阿尔及利亚编辑为任何其他值,这违背了列表可供选择的目的。

【问题讨论】:

  • 嗨,我也有同样的问题。如果您找到了合适的解决方案,请告诉我。

标签: .net editing propertygrid uitypeeditor


【解决方案1】:

如果您只想显示可供选择的值的下拉列表,但阻止用户在 PropertyGrid 控件中的属性值中键入任何内容,您可以从 TypeConverter 派生并覆盖 GetStandardValuesExclusive 方法简单地返回 true。

要提供一组允许值显示在下拉列表中,您需要覆盖 GetStandardValuesSupported 方法以返回 true,然后覆盖 GetStandardValues 以返回要在下拉列表中显示的允许值列表列表。

一旦你有了它,你只需要像这样在属性上指定你的自定义类型转换器:

public class MyTypeConverter : TypeConverter
{
  //Override GetStandardValuesExclusive, 
  //GetStandardValues and GetStandardValuesSupported
}

public class SomeClass
{

   [TypeConverter(typeof(MyTypeConverter))]
   public string SomePropertry
   {
      ...
   }
}

【讨论】:

  • 我的自定义转换器继承自 StringConverter 而不是 TypeConverter。似乎即使您按照上述步骤操作,用户也可以在 PropertyGrid 中键入,除非您专门从 TypeConverter 而不是 StringConverter 继承。我改用 TypeConverter,一切正常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-04
  • 1970-01-01
  • 2016-03-21
  • 1970-01-01
  • 1970-01-01
  • 2017-10-10
  • 1970-01-01
相关资源
最近更新 更多