4

プロパティグリッドに、「文字列」値を表示するが「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;
    }
}

プロパティグリッドコントロールでの私のクラスの使用は次のとおりです

public class MyObjectProperty
{
    [TypeConverter(typeof(MyObjectOptions))]
    public int Id
    {
        get { return this.id; }
        set { this.id = value; }
    }
}

ご覧のとおり、オブジェクトのIDを保存したいのですが、ドロップダウンリストにその名前を表示したい...ハッシュテーブルを使用しようとしましたが、うまくいきません...

ところで-私は.Netのバージョン3.5を使用していますが、WinFormのみを使用しています(WPFではありません)。

4

1 に答える 1

2

そのために GetStandardValues を使用することはできません。このメソッドは、整数値を 1、5、10 などに制限する必要がある場合に便利です。

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

ハッシュテーブルについては、内容が静的であれば TypeConverter に格納できます。動的な場合は、グリッドのターゲット インスタンスに管理させるのが最善です。コンバーターから、TypeDescriptorContext.Instance プロパティを介してアクセスできます。

それが役立つことを願っています。

于 2009-04-07T19:24:47.123 に答える