Список не обновляется, когда в PropertyGrid выбрано несколько объектов

Я пытаюсь решить проблему, когда в сетке свойств выбрано несколько объектов одного типа. Все эти объекты предоставляют массив строк. Во время моих исследований я выяснил, что пользователь не может редактировать массив, поэтому я переключился на Список и использую специальный редактор для редактирования этих строк. Кажется, это работает нормально, но на данный момент меня интересует то, что свойство не обновляется ни в одном из выбранных объектов.

Давайте подробно рассмотрим простой и короткий пример. Допустим, у вас есть этот класс:

public class MyProperties
{
    private List<string> _channels;

    public MyProperties()
    {
        _channels = new List<string>();
    }

    [Editor(@"System.Windows.Forms.Design.StringCollectionEditor," +
    "System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a",
   typeof(System.Drawing.Design.UITypeEditor))]
    public List<string> Channels
    {
        get
        {
            return _channels;
        }
    }
}

Я выбираю три объекта этого типа для моей сетки свойств:

public partial class Form1 : Form
{
    private MyProperties[] _properties;
    public Form1()
    {
        InitializeComponent();

        _properties = new MyProperties[3];
        for (int i = 0; i < _properties.Length; ++i)
            _properties[i] = new MyProperties();

        propertyGrid1.SelectedObjects = _properties;
    }
}

Теперь, когда я начинаю пример, я могу открыть соответствующий редактор списка строк, чтобы редактировать мой список каналов. При нажатии ни один из объектов MyProperties не содержит настроенный список строк.

Приведенный выше пример работает без проблем при выборе только одного экземпляра MyProperties:

propertyGrid1.SelectedObject = _properties[0];

Есть ли что-то, что я делаю неправильно, или что-то еще требуется, чтобы заставить его работать? Заранее спасибо за ваши усилия!

0 ответов

Другие вопросы по тегам