开发者

Set PropertyGrid Default Popup Editor Startup Size (WinForms)

开发者 https://www.devze.com 2023-01-25 13:32 出处:网络
). How can you set the default size with which the Popup Editor shows up when you invoke it from a Property Grid.

). 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 开发者_JAVA技巧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


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.


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; }

}
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号