当前位置:  开发笔记 > 开发工具 > 正文

打开标准CollectionEditor中的"描述"面板

如何解决《打开标准CollectionEditor中的"描述"面板》经验,为你挑选了1个好方法。

我有一个List有财产的组件.列表中的类的每个属性都使用描述属性进行修饰,但描述不会显示在集合编辑器中

在IDE设计器中有没有办法打开标准Collection Editor中的Description面板?我是否需要从CollectionEditor继承自己的类型编辑器才能实现这一目标?



1> Marc Gravell..:

基本上,您需要创建自己的编辑器,或者子类CollectionEditor并弄乱表单.后者更容易 - 但不一定很漂亮......

以下使用常规集合编辑器表单,但只是扫描它以获取PropertyGrid控件HelpVisible.

/// 
/// Allows the description pane of the PropertyGrid to be shown when editing a collection of items within a PropertyGrid.
/// 
class DescriptiveCollectionEditor : CollectionEditor
{
    public DescriptiveCollectionEditor(Type type) : base(type) { }
    protected override CollectionForm CreateCollectionForm()
    {
        CollectionForm form = base.CreateCollectionForm();
        form.Shown += delegate
        {
            ShowDescription(form);
        };
        return form;
    }
    static void ShowDescription(Control control)
    {
        PropertyGrid grid = control as PropertyGrid;
        if (grid != null) grid.HelpVisible = true;
        foreach (Control child in control.Controls)
        {
            ShowDescription(child);
        }
    }
}

要在使用中显示此信息(请注意使用EditorAttribute):

class Foo {
    public string Name { get; set; }
    public Foo() { Bars = new List(); }
    [Editor(typeof(DescriptiveCollectionEditor), typeof(UITypeEditor))]
    public List Bars { get; private set; }
}
class Bar {
    [Description("A b c")]
    public string Abc { get; set; }
    [Description("D e f")]
    public string Def{ get; set; }
}
static class Program {
    [STAThread]
    static void Main() {
        Application.EnableVisualStyles();
        Application.Run(new Form {
            Controls = {
                new PropertyGrid {
                    Dock = DockStyle.Fill,
                    SelectedObject = new Foo()
                }
            }
        });
    }
}

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有