我有一个propertygrid,使用UITypeEditor来显示一个列表框并选择一个项目。该项目在选择时返回到proertygrid上。但是,如何直接禁用所选项目的编辑,只读选项会阻止它被编辑。Propertygrid UIEditor通过键盘禁用值编辑
比方说,我正在更改属性国家另一种形式,显示列表框中的国家列表。当我选择'阿尔及利亚'并按确定时,'阿尔及利亚'显示在整个国家,但我可以直接编辑阿尔及利亚到任何其他值,击败列表的目的可供选择。
我有一个propertygrid,使用UITypeEditor来显示一个列表框并选择一个项目。该项目在选择时返回到proertygrid上。但是,如何直接禁用所选项目的编辑,只读选项会阻止它被编辑。Propertygrid UIEditor通过键盘禁用值编辑
比方说,我正在更改属性国家另一种形式,显示列表框中的国家列表。当我选择'阿尔及利亚'并按确定时,'阿尔及利亚'显示在整个国家,但我可以直接编辑阿尔及利亚到任何其他值,击败列表的目的可供选择。
如果您只想显示要从中进行选择的值的下拉列表,但可以防止用户在PropertyGrid控件内输入任何内容到属性值,则可以从TypeConverter派生并覆盖GetStandardValuesExclusive方法以简单地返回真正。
要提供下拉列表中显示的一组允许值,您需要覆盖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,它一切正常。 –
您好,我有同样的问题。请让我知道你是否找到了合适的解决方案。 –