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

C# 设置PropertyGrid默认弹出编辑器启动大小(WinForms),c#,C#,)。如何设置从属性网格调用弹出编辑器时弹出编辑器显示的默认大小 这是为熟悉Windows窗体属性网格编辑器的每个人准备的 您知道,如果将列表属性抛出到网格,它会显示小[…]按钮,如果您按下该按钮,它会弹出默认的子值编辑器。实际上,我对另一种类型的对象使用编辑器,但我给出了这个示例,只是为了让您知道我指的是什么。这是一张图片,至少在链接存在之前: 我的理解是(对于模态编辑器和非模态编辑器),它完全取决于所显示控件的突发奇想。如果所涉及的UITypeEditor选择了一个大表单,它将是一个大表单 改

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

这是为熟悉Windows窗体属性网格编辑器的每个人准备的

您知道,如果将列表属性抛出到网格,它会显示小[…]按钮,如果您按下该按钮,它会弹出默认的子值编辑器。实际上,我对另一种类型的对象使用编辑器,但我给出了这个示例,只是为了让您知道我指的是什么。这是一张图片,至少在链接存在之前:

我的理解是(对于模态编辑器和非模态编辑器),它完全取决于所显示控件的突发奇想。如果所涉及的
UITypeEditor
选择了一个大表单,它将是一个大表单


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

您可以通过从标准的
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; }

}
公共类MyModel
{
[编辑器(typeof(FullscreenCollectionEditor),typeof(UITypeEditor))]
公共列表文件{get;set;}
}

Hi Marc.谢谢你的回答。这个属性网格让我很紧张。我讨厌这样一个事实,我需要从头开始编写代码,而他们所要做的就是提供一个小属性,甚至回调,让我们可以自定义一点默认编辑器。现在更让我沮丧的是,正如你在上图中看到的,我们得到了hat“Add”按钮,它为我们在弹出式编辑器中表示的任何对象创建一个新实例。让我头疼的是,我没有在该构造函数中获得对主对象的引用(然后是调用模态UI的主对象).arrrgh!!!Marc,你对另一个问题有什么想法吗?你知道…当单击“添加”创建PropertyGrid对象时,它们会调用相关对象上的无参数构造函数。我如何获得对原始对象的引用?ITypeDescriptorContext没有用::-(“实例”字段指向当前正在编辑的属性,我无论如何都无法找到该属性的所有者。@Axonn-对不起,我刚才才看到注释。不,我没有解决方法。