プロパティ グリッドで同じタイプのオブジェクトが複数選択されている問題を解決しようとしています。これらのオブジェクトはすべて、文字列の配列を提供します。調査中に、ユーザーが配列を編集できないことがわかったので、リストに切り替え、カスタム エディターを使用してこれらの文字列を編集しています。それはうまくいくようですが、現時点で私が考えているのは、選択したオブジェクトのどちらでもプロパティが更新されていないということです。
簡単で短い例で詳しく説明しましょう。このクラスがあるとしましょう:
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;
}
}
}
プロパティ グリッド用に、このタイプの 3 つのオブジェクトを選択しています。
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 の 1 つのインスタンスのみを選択する場合に問題なく動作します。
propertyGrid1.SelectedObject = _properties[0];
私が間違っていることはありますか、それとも機能させるためにもっと必要なことはありますか? よろしくお願いいたします。