如何使用UITypeEditorEditStyle.None,为什么要这么做?

时间:2018-06-28 12:43:43

标签: winforms

我已经实现了两个自定义UITypeEditor,一个使用模式编辑样式,另一个使用下拉菜单。它们用于编辑从标准控件派生的类的实例。在这两种情况下,当用户完成编辑时,结果都将用于填充所选控件的属性,而不是正在编辑的属性。例如,当我编辑MyLabel类的新属性时,Text属性也会得到更新。

我考虑过向MyLabel添加一个新属性,该属性不需要可见的编辑器,但是在更改Text属性时仍会更新它。我以为可以使用UITypeEditorEditStyle.None,编辑器将被静默调用并更新Text属性。但是,永远不会调用该编辑器。

我认为我的想法太花哨了,但我仍然很好奇。什么时候要使用“无”编辑样式,以及如何使用它?

我已经删除了编辑器,以便它只显示一条消息。在这里:

public class LocalizedLabelSuffixEditor : UITypeEditor
{
    public override UITypeEditorEditStyle GetEditStyle(System.ComponentModel.ITypeDescriptorContext context)
    {
        return UITypeEditorEditStyle.None;
    }

    public override object EditValue(System.ComponentModel.ITypeDescriptorContext context, IServiceProvider provider, object value)
    {
        MessageBox.Show("Editing a suffix.");

        return value;
    }
}

这是应该使用的属性:

// For adding colons or other punctuation marks rather than requiring separate translations for "Charge" and "Charge:".
[Editor(typeof(LocalizedLabelSuffixEditor), typeof(UITypeEditor))]
public string Suffix { get; set; }

谢谢。

0 个答案:

没有答案