1

我正在尝试解决在属性网格中选择多个具有相同类型的对象的问题。所有这些对象都提供了一个字符串数组。在调查期间,我发现用户无法编辑数组,因此我切换到列表并使用自定义编辑器来编辑这些字符串。这似乎工作正常,但目前我在思考的是该属性在两个选定的对象中都没有更新。

让我们用一个简单而简短的例子来详细说明。假设你有这个类:

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

是我做错了什么还是需要更多的东西才能让它工作?预先感谢您的努力!

4

0 回答 0