设置PropertyGrid默认弹出编辑器启动大小(WinForms)

时间:2010-11-18 12:59:21

标签: c#

)。如何设置弹出编辑器从属性网格调用时显示的默认大小。

这适用于所有熟悉Windows窗体的属性网格编辑器的人。

你知道如果你把一个List属性抛给一个Grid,它会显示一个小按钮,如果你按下它会弹出它的默认子值编辑器。我实际上将编辑器用于另一种类型的对象,但我给出了这个例子,所以你知道我指的是什么。这是一张照片,至少在链接存在之前是这样的:

http://www.perpetuumsoft.de/sf/en/ims/rssSilverlight/GetStart/image032.jpg

2 个答案:

答案 0 :(得分:1)

我的理解是(对于模态编辑器和非模态编辑器),完全直到显示控件的奇思妙想。如果涉及的UITypeEditor选择一个大的形式,它将会很大......

改变这种情况的唯一方法是定义自己的UITypeEditor并将其与所涉及的类型相关联(有时可能与TypeDescriptor.AddAttributes(...)相关联,这会创建运行时希望显示的相同形式,但在显示之前调整大小。

答案 1 :(得分:0)

您可以通过继承标准System.ComponentModel.Design.CollectionEditor来实现此目的,然后在CreateCollectionForm覆盖中设置所需的大小。

装饰您的集合以使用自定义集合编辑器。 下面是一个以全屏启动集合编辑器的示例

class FullscreenCollectionEditor : System.ComponentModel.Design.CollectionEditor
{
    protected override CollectionForm CreateCollectionForm()
    {
        var editor = base.CreateCollectionForm();
        editor.WindowState = System.Windows.Forms.FormWindowState.Maximized;
        return editor; 
    }

    public FullscreenCollectionEditor(Type type) : base(type)
    {
    }

}

然后用[Editor(typeof(FullscreenCollectionEditor), typeof(UITypeEditor))]装饰您的集合属性,即

public class MyModel
{

    [Editor(typeof(FullscreenCollectionEditor), typeof(UITypeEditor))]
    public List<FileModel> Files { get; set; }

}