Propertygrid UIEditor通过键盘禁用值编辑

Vis*_*Dav 2 .net propertygrid uitypeeditor editing

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

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

lee*_*e-m 6

如果您只想显示要从中选择的值的下拉列表,但阻止用户在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
   {
      ...
   }
}
Run Code Online (Sandbox Code Playgroud)