Axonn
Axonn

Reputation: 10346

Set PropertyGrid Default Popup Editor Startup Size (WinForms)

). How can you set the default size with which the Popup Editor shows up when you invoke it from a Property Grid.

This is for everybody who is familiar with Windows Forms' Property Grid Editor.

You know that if you throw a List property to a Grid, it shows the little [...] button which if you press it pops up its default sub-value editor. I actually use the editor for another type of object, but I gave this example just so you know what I'm referring to. And here's a picture, at least until the link lives:

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

Upvotes: 0

Views: 1097

Answers (2)

Joe Eveleigh
Joe Eveleigh

Reputation: 99

You can achieve this by inheriting from the standard System.ComponentModel.Design.CollectionEditor and then set the desired size in the CreateCollectionForm override.

Decorate your collection to use the custom collection editor. Below is an example that will start up the collection editor in full screen

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)
    {
    }

}

And then decorate your collection property with [Editor(typeof(FullscreenCollectionEditor), typeof(UITypeEditor))] i.e.

public class MyModel
{

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

}

Upvotes: 0

Marc Gravell
Marc Gravell

Reputation: 1064044

My understanding is that (both for modal and non-modal editors) it is completely up to the whim of the control being shown. If the UITypeEditor involved chooses a big form, it will be big...

The only way to change that would be to define your own UITypeEditor and associate it with the types involved (sometimes possible with TypeDescriptor.AddAttributes(...), that creates the same form as the runtime wanted to show, but resizes it before showing.

Upvotes: 1

Related Questions