0

カスタム値に設定できるオートコンプリート文字列フィールドを PropertyGrid に実装したいと思います。

これが私の文字列コンバーターです

public class EntityNameAutocompleteConverter : StringConverter
{
    public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
    {
        return true;
    }

    public override bool GetStandardValuesExclusive(ITypeDescriptorContext context)
    {
        return false;
    }

    public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
    {
        return new StandardValuesCollection(Globals.EntityCache.Select(e => e.Name).ToList());
    }
}

編集する文字列プロパティの TypeConverter として設定します。

問題は、多くの標準値が存在する可能性があることです。したがって、入力によってそれらをフィルタリングしたいと思います。たとえば、「Foo」と入力した場合、ドロップダウンで「Foo」から始まる文字列のみが表示されます。

それは何らかの方法で可能ですか?おそらく、コンテキストから、または他の方法でプロパティの中間値を取得することは可能ですか?

4

1 に答える 1

1

次のように、コンテキストパラメーターを使用して現在のプロパティ値を取得できます。

public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
{
    // get the current property value
    string value = (string)context.PropertyDescriptor.GetValue(context.Instance);
    return new StandardValuesCollection(GetFilteredList(value));
}
于 2013-08-06T07:58:58.683 に答える