我正在尝试解决在属性网格中选择多个具有相同类型的对象的问题。所有这些对象都提供了一个字符串数组。在调查期间,我发现用户无法编辑数组,因此我切换到列表并使用自定义编辑器来编辑这些字符串。这似乎工作正常,但目前我在思考的是该属性在两个选定的对象中都没有更新。
让我们用一个简单而简短的例子来详细说明。假设你有这个类:
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];
是我做错了什么还是需要更多的东西才能让它工作?预先感谢您的努力!