我有一个使用UITypeEditor显示列表框并选择项目的propertygrid。这个项目在选择时在proertygrid上返回。但是如何直接禁用所选项目的编辑,readonly选项可以防止它被编辑。
假设我正在从另一个表单中更改属性国家/地区,该表单会在列表框中显示国家/地区列表。当我选择“阿尔及利亚”并按“确定”时,“阿尔及利亚”将显示在整个国家/地区,但我可以直接将阿尔及利亚编辑为任何其他值,从而无法选择列表的目的。
答案 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
{
...
}
}