我为MSDN的演练类型Smiley编写了一个自定义UITypeEditor http://msdn.microsoft.com/en-us/library/ms171840.aspx
当用户点击省略号时,我的UITypeEditor将启动一个模态对话框。
public class SmileyEditor : UITypeEditor
{
public override UITypeEditorEditStyle GetEditStyle(System.ComponentModel.ITypeDescriptorContext context)
{
return UITypeEditorEditStyle.Modal;
}
经过多次痛苦后,我发现如果我的类型是一个类,它会起作用,但如果它是一个枚举则不行。发生了什么事?
[Editor(typeof(SmileyEditor), typeof(System.Drawing.Design.UITypeEditor))]
public Smiley face { get; set; }
如果Smiley类型是枚举,则属性网格不显示省略号按钮,只显示下拉列表。为什么呢?
答案 0 :(得分:1)
显然,当存在系统类型编辑器时,PropertyGrid会优先于自定义编辑器。解决方法是使用TypeConvertorAttribute注释您的类型,引用一个覆盖方法GetStandardValuesSupported
的TypeConvertor。见https://stackoverflow.com/a/4067173/284795