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