2013-04-03 10 views
3

У меня есть класс, который содержит несколько общедоступных свойств. Одним из таких свойств является Список, содержащий экземпляры другого класса. Это ломает что-то вроде этого:Как вы настраиваете описания в Редакторе коллекции объекта PropertyGrid?

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 объект, который редактирует Minor объект кадра. Он имеет поле, содержащее ссылку на коллекцию объектов MinorFrameFormatDefinition. При нажатии на кнопку в этом поле, чтобы открыть Редактор коллекции и нажмите кнопку Добавить, я получаю это:

enter image description here

Как получить редактор коллекции маркировать объекты с Definition вместо Irig106Library.Filters.PCM.MinorFrameFormatDefinition ?

ответ

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); 
    } 
} 
+0

Он работает, но как я могу изменить заголовок Редактора коллекций? Например, измените «Редактор коллекции MinorFrameFormatDefinition» на «Мой редактор коллекции кадров». – Andark

+0

@Andark - это не связано - задайте другой вопрос –

 Смежные вопросы

  • Нет связанных вопросов^_^