Установить положение для пользовательской формы CollectionEditor в WinForms

Я написал собственный редактор коллекций для элемента управления WinForms. Его основной код выглядит так:

internal class MyCollectionEditor : CollectionEditor
{
    public MyCollectionEditor(Type type) : base(type) { }

    protected override System.ComponentModel.Design.CollectionEditor.CollectionForm CreateCollectionForm()
    {
        System.ComponentModel.Design.CollectionEditor.CollectionForm myForm = base.CreateCollectionForm();

        #region Adjust the property grid

        PropertyGrid myPropGrid = GetPropertyGrid(myForm);
        if (myPropGrid != null)
        {
            myPropGrid.CommandsVisibleIfAvailable = true;
            myPropGrid.HelpVisible = true;
            myPropGrid.PropertySort = PropertySort.CategorizedAlphabetical;
        }

        #endregion

        return myForm;
    }
}

Мне нужно установить пользовательский размер и расположение для формы редактора коллекции, но я не смог найти способ сделать это. Кажется, что форма редактора коллекции всегда позиционируется VS по умолчанию. Есть ли способ сделать то, что мне нужно?

1 ответ

Решение

Это относится к StartPosition, DesktopLocation а также Size который вы задаете для формы:

public class MyCollectionEditor : CollectionEditor
{
    public MyCollectionEditor() : base(typeof(Collection<Point>)) { }
    protected override CollectionForm CreateCollectionForm()
    {
        var form = base.CreateCollectionForm();
        // Other Settings
        // ...
        form.StartPosition = FormStartPosition.Manual;
        form.Size = new Size(900, 600);
        form.DesktopLocation = new Point(10, 10);
        return form;
    }
}

Тогда украсьте свою собственность следующим образом:

[Editor(typeof(MyCollectionEditor), typeof(UITypeEditor))]
public Collection<Point> MyPoints { get; set; }
Другие вопросы по тегам