2009-02-27 10 views
4

"文字列"の値を表示し、 "int"値を返すドロップダウンリストをpropertygridに表示したいと考えています。.Net PropertyGrid DropDownList - 表示値と異なる戻り値

例えば、私がこのクラスだ設定してみましょう:ここ

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を保存しますオブジェクトですが、ドロップダウンリストに名前を表示したいのですが、ハッシュテーブルを使用しようとしましたが、うまくいきません...

BTW - 私はバージョン3.5の.NETを使用しますが、 WPF)。

答えて

2

GetStandardValuesを使用することはできません。このメソッドは整数値を1、5、10と制限しなければならない場合に便利です。

文字列をプロパティ値に表示するには、TypeConverterのConvertToメソッドとConvertFromメソッドをオーバーライドするだけです。 PropertyGridは、ドロップダウンリストで変換された文字列を使用します。

ハッシュテーブルについては、コンテンツが静的であれば、そのハッシュテーブルをTypeConverterに保存できます。動的な場合は、グリッドのターゲットインスタンスで管理することをお勧めします。あなたのコンバーターから、あなたはTypeDescriptorContext.Instanceプロパティを通してそれにアクセスすることができます。

希望に役立ちます。