0
私はPropertyGridに表示する整数プロパティを持つクラスを持っているとします。今度はPropertyGridは単に整数値を表示するのではなく、リストからの対応する文字列値と、さらにそのプロパティの可能な値(文字列として)を持つドロップダウンリストを表示すべきです。PropertyGridのintプロパティの文字列を提供します
私はこのためにTypeConverterを使用しなければならないことを知っています。これは過去に文字列プロパティに対して行っています。しかし、私はこれがどのように行われなければならないのか理解できません。あなたは私のコードからわかるように、私は完全に無力だ:
class MyClassConverter : TypeConverter
{
List<string> values = new List<string>();
public MyClassConverter()
{
values.Add("Value1");
values.Add("Value2");
values.Add("Value3");
}
public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
{
bool ret = true; //base.CanConvertFrom(context, sourceType);
Debug.Print("CanConvertFrom: " + sourceType.ToString() + " " + ret.ToString());
return ret;
}
public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
{
bool ret = base.CanConvertTo(context, destinationType);
Debug.Print("CanConvertTo: " + destinationType.ToString() + " " + ret.ToString());
return ret;
}
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
{
Debug.Print("ConvertFrom: " + value.GetType().ToString());
//return base.ConvertFrom(context, culture, value);
for (int i = 0; i < values.Count; i++)
{
if (values[i] == value)
{
return i;
}
}
return -1;
}
public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
{
Debug.Print("ConvertTo: " + destinationType.ToString());
return base.ConvertTo(context, culture, value, destinationType);
}
public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
{
Debug.Print("GetStandardValues");
StandardValuesCollection collection = new StandardValuesCollection(values);
return collection;
}
public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
{
return true;
}
}
最短修正はそれではないだろう、プロパティ列挙型を作ることでしょうか? –
私の場合はありません。リストの値はユーザーによって入力されます。 –