純PropertyGridのDropDownListコントロール - ショーの値とは異なる戻り値
-
09-09-2019 - |
質問
私は、PropertyGridの中で、いくつかの「文字列」の値を表示ドロップダウンリストを表示しますが、「INT」の値を返すことができるようにしたい。
たとえば、私はこのクラスを持って設定してみましょう。
public class MyObjectOptions : StringConverter
{
public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
{
return true;
}
public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
{
MyObjectCollection mm = new MyObjectCollection();
List<String> names = new List<String>
foreach (MyObject m in mm)
{
m.Id // Need to store this somewhere ...
names.Add(m.Name);
}
return new StandardValuesCollection(name);
}
public override bool GetStandardValuesExclusive(ITypeDescriptorContext context)
{
return true;
}
}
ここでPropertyGridコントロールで私のクラスの使用
public class MyObjectProperty
{
[TypeConverter(typeof(MyObjectOptions))]
public int Id
{
get { return this.id; }
set { this.id = value; }
}
}
あなたが見ることができるのように、私は、オブジェクトのIDを格納したいが、私はハッシュテーブルを使用してみてください...それはドロップダウンリストに名前のショーにしたいが、それは動作しませんです...
ところで - 私は、.NETのバージョン3.5を使用しますが、私はWinフォーム(ないWPF)を使用します。
。解決
あなたはそのためのGetStandardValuesを使用することはできません。あなたはのは、1、5、10を言わせて、あなたのために整数値を制限しなければならなかった場合は、この方法は有用であろう。
あなたは、プロパティ値の文字列を表示したい場合は、、あなたは自分のTypeConverterのをConvertToとConvertFromメソッドをオーバーライドする必要があります。 PropertyGridのドロップダウンリストで、変換後の文字列を使用します。
その内容が静的である場合は、あなたのハッシュテーブルについて、あなたはあなたのTypeConverterでそれを保存することができます。それはダイナミックだ場合は、最高のは、グリッドのターゲット・インスタンスがそれを管理できるようにすることです。あなたのコンバータから、あなたはTypeDescriptorContext.Instanceプロパティを介してアクセスすることができます。
希望に役立ちます。
所属していません StackOverflow