3

いくつかのパブリック プロパティを含むクラスがあります。これらのプロパティの 1 つは、別のクラスのインスタンスを含む List です。次のように分解します。

namespace Irig106Library.Filters.PCM
{
    [Description("Definition")]
    public class MinorFrameFormatDefinition
    {
        [Description("Word Number")]
        public int WordNumber { get; set; }

        [Description("Number of Bits")]
        public int NumberOfBits { get; set; }
    }

    public class MinorFrame
    {
        // ... other properties here

        [Category("Format")]
        [Description("Minor Frame Format Definitions")]
        public List<MinorFrameFormatDefinition> MinorFrameFormatDefinitions { get; set; }
    }
}

マイナー フレーム オブジェクトを編集するPropertyGridオブジェクトがあります。オブジェクトのコレクションへの参照を含むフィールドがありMinorFrameFormatDefinitionます。このフィールドのボタンをクリックしてコレクション エディターを開き、[追加] ボタンをクリックすると、次のようになります。

ここに画像の説明を入力

Definitionコレクション エディタでオブジェクトにの代わりにラベルを付けるにはどうすればよいIrig106Library.Filters.PCM.MinorFrameFormatDefinitionですか?

4

1 に答える 1

4

このように、ToString() をオーバーライドできます。

public class MinorFrameFormatDefinition
{
    [Description("Word Number")]
    public int WordNumber { get; set; }

    [Description("Number of Bits")]
    public int NumberOfBits { get; set; }

    public override string ToString()
    {
        return "hello world";
    }
}

または、クラスを変更したくない場合は、TypeConverter を定義することもできます。

[TypeConverter(typeof(MyTypeConverter))]
public class MinorFrameFormatDefinition
{
    [Description("Word Number")]
    public int WordNumber { get; set; }

    [Description("Number of Bits")]
    public int NumberOfBits { get; set; }
}

public class MyTypeConverter : TypeConverter
{
    public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
    {
        if (destinationType == typeof(string))
            return "hello world";

        return base.ConvertTo(context, culture, value, destinationType);
    }
}
于 2013-04-04T07:14:11.513 に答える