1

Я написал специальный редактор коллекций для элемента управления WinForms. Его основной код выглядит следующим образом:Установить позицию для пользовательской формы CollectionEditor в 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 по умолчанию. Есть ли способ сделать то, что мне нужно?

ответ

0

Он уважает к 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; } 
+1

Не по теме, но так как вы настраиваете коллекции редактор, вы также можете найти это сообщение полезным: [Как включить значения по умолчанию для свойств в диалоговом окне «CollectionEditor»] (http://stackoverflow.com/questions/35517211/how-to-enable-default-values-for- диалог свойств-в-коллекционере) –

+0

Я пытаюсь восстановить позицию формы, используя одно свойство, DesktopBounds, но размер всегда увеличивается с каждым присваиванием свойству DesktopBounds. Вы знаете, почему это происходит? – TecMan

+0

@TecMan Вы также можете использовать 'SetDesktopBounds' без проблем, но сначала вы должны установить' StartPosition' в 'FormStartPosition.Manual'. –

 Смежные вопросы

  • Нет связанных вопросов^_^