gpt4 book ai didi

c# - StringConverter 获取标准值集合

转载 作者:行者123 更新时间:2023-11-30 21:18:51 26 4
gpt4 key购买 nike

我正在尝试使用属性网格来显示数据。我必须为预定义的字符串常量编写 StringConverters,以便它们可以显示在组合框中。

考虑一个颜色列表和另一个角度列表 0,90,180,270。我想在网格上显示很多这样的列表。

我正在编写从 StringConverters 派生的新类并覆盖 GetStandardValues

class AngleConverter : StringConverter
{
string[] Units = { "0", "90", "180","270" };
public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
{
return true;
}
public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
{
return new StandardValuesCollection(Units);
}
public override bool GetStandardValuesExclusive(ITypeDescriptorContext context)
{
return true;
}
}

Class UnitConverter : ...除了字符串数组中的更改外,代码相同。我在像 [TypeConverter(typeof(AngleConverter))] 这样的属性之前使用这个类。如果我想添加一个字符串列表以显示在网格上的列表框中,我需要创建新类。

是否有一种通用的方法可以做到这一点而无需每次都创建新类。

谢谢--哈里

最佳答案

编辑:根据 Thomas Lycken 在此 link 的回答,如果您的属性是枚举,它可能会有所帮助...

我不知道你是否可以避免编写新类。我对您正在做的事情还不够熟悉,无法知道是否有更好或更简单的方法。话虽如此,您可以通过创建一个像这样的抽象基类来缩短您的类:

class MyBaseStringConverter : StringConverter 
{
public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
{
return true;
}
public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
{
//Call the abstract GetValues function here.
return new StandardValuesCollection(GetValues());
}
public override bool GetStandardValuesExclusive(ITypeDescriptorContext context)
{
return true;
}
protected abstract string [] GetValues();
}

public AngleConverter : MyBaseStringConverter
{
protected override string [] GetValues()
{
return new string [] { "0", "90", "180", "270" };
}
}

public ColorConverter : MyBaseStringConverter
{
protected override string [] GetValues()
{
return new string [] { "Red", "Green", "Blue" };
}
}

关于c# - StringConverter 获取标准值集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4046026/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com