我有一个包含许多属性的 PropertyGrid,如下所示:
我想让用户调整这些,但除此之外,我想给他们一个显示“猜测”的按钮,它将尝试为属性选择“最佳”值。我发现这UITypeEditor几乎可以满足我的需求。
我有以下代码
public class GuessMyValueTypeEditor : UITypeEditor
{
public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context)
{
return UITypeEditorEditStyle.Modal;
}
public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
{
return ((MyClass)context.Instance).GuessMyValue();
}
}
[System.ComponentModel.Category("Adjustable")]
[EditorAttribute(typeof(GuessMyValueTypeEditor), typeof(UITypeEditor))]
public int MyValue
{
get;
set;
}
当用户试图改变MyValue时,他会得到一个按钮,上面写着...。按下时,它会调用我的代码GuessMyValue,并将属性设置为新值。
这一切都很好,但我发现“...”提示非常不直观。用户在按下显示“...”的按钮时期望一个对话框,并且我的代码在没有任何用户交互的情况下重置属性,因此此功能看起来像一个错误。
如何将按钮上的提示更改为类似的内容Guess?
如果不可能,如何自定义 aUITypeEditor以显示我选择的按钮,而不是其标准的“编辑”按钮?

