2011-01-06 14 views
6

私は競合他社に関する情報を持つdatagridviewを持っています。私は、各コップメーターのプロパティをPropertyGridに表示します。これらのプロパティ(Degree、City、Instituteなど)の一部を、データベースから取得した値を含むドロップボックスにします。この目的のために、私はこの1つVariable StandardValuesを持つカスタムTypeConverter

class DegreeTypeConverter : StringConverter 
{ 
    static string[] _valueList = { "Bachelor", "Master", "Student" }; 

    public override bool GetStandardValuesSupported(
    ITypeDescriptorContext context) 
    { 
    return true; 
    } 

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


    public override StandardValuesCollection GetStandardValues(
    ITypeDescriptorContext context) 
    { 
    return new StandardValuesCollection(_valueList); 
    } 
} 

[TypeConverter(typeof(DegreeTypeConverter))] 
    public string Degree 
    { 
    get { return _degree; } 
    set { _degree = value; } 
    } 

のようなカスタムTypeConvertorを作成することができますが、私はVALUELISTそのデータベースから取得したいと私はいくつかのユニバーサルコンバータが唯一の違いで14のコンバータよりもはるかに良いだろう14のこのような性質を持っています: valueList。変数valueListを持つTypeConverterを作成することは可能ですか(たとえば、コンストラクタのパラメータとしてTypeConverterに渡されます)?あるいは、PropertyGridに変数値リストを持つドロップボックスを持つ別の方法がありますか? 十分に明確であることを願って Thnxを事前に

答えて

5

GetStandardValuesメソッドでは、コンテキストが与えられます。プロパティを保持するオブジェクトにアクセスするにはcontext.Instanceを使用してください。次に、DBサービスを提供するサービスプロバイダを取得するためにそれを調べます。独自のAPIを使用することもできますし、IServiceProviderから派生してGetServiceを実装することもできますし、IOCコンテナをシングルトンとして取得することもできます。

関連する問題