Propertygrid UIEditor通过键盘禁用值编辑

时间:2011-08-11 05:29:13

标签: .net editing propertygrid uitypeeditor

我有一个使用UITypeEditor显示列表框并选择项目的propertygrid。这个项目在选择时在proertygrid上返回。但是如何直接禁用所选项目的编辑,readonly选项可以防止它被编辑。

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

1 个答案:

答案 0 :(得分:6)

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

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

一旦你有了这个,你只需要在属性上指定自定义类型转换器,如下所示:

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

public class SomeClass
{

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