Я хочу взять объект, скажем, этот объект:
public class BenchmarkList
{
public string ListName { get; set; }
public IList Benchmarks { get; set; }
}
, и чтобы этот объект отображал его ListName как часть «name» в PropertiesGrid («Benchmark» было бы хорошо), а для «значения» в PropertyGrid должен быть раскрывающийся список IList тестов:
вот объект Benchmark
public class Benchmark
{
public int ID {get; set;}
public string Name { get; set; }
public Type Type { get; set; }
}
Я бы хотел, чтобы в раскрывающемся списке отображалось свойство Name для Контрольный показатель того, что могут видеть пользователи. Вот наглядный пример:
Итак, по сути, я пытаюсь получить коллекцию объектов Benchmark в раскрывающемся списке, и эти объекты должны отображать свое свойство Name в качестве значения в раскрывающемся списке.
Я читал другие статьи об использовании PropertiesGrid, включая ЭТО и ЭТО , но они более сложные, чем то, что я » Майк
ОБНОВЛЕНИЕ:
Хорошо, я немного меняю детали. Раньше я перебарщивал с объектами, которые, по моему мнению, должны были быть задействованы, так что вот мой новый подход.
У меня есть объект под названием Аналитический. Это объект, который должен быть привязан к PropertiesGrid. Теперь, если я покажу свойство типа enum, PropertiesGrid позаботится о раскрывающемся списке за меня, что очень приятно. Если я выставляю свойство, которое является коллекцией настраиваемого типа, PropertiesGrid не так хорош ...
Вот код для Analytic, объекта, который я хочу привязать к PropertiesGrid:
public class Analytic
{
public enum Period { Daily, Monthly, Quarterly, Yearly };
public Analytic()
{
this.Benchmark = new List();
}
public List Benchmark { get; set; }
public Period Periods { get; set; }
public void AddBenchmark(IBenchmark benchmark)
{
if (!this.Benchmark.Contains(benchmark))
{
this.Benchmark.Add(benchmark);
}
}
}
Вот краткий пример из двух объектов, реализующих интерфейс IBenchmark:
public class Vehicle : IBenchmark
{
public Vehicle()
{
this.ID = "00000000-0000-0000-0000-000000000000";
this.Type = this.GetType();
this.Name = "Vehicle Name";
}
public string ID {get;set;}
public Type Type {get;set;}
public string Name {get;set;}
}
public class PrimaryBenchmark : IBenchmark
{
public PrimaryBenchmark()
{
this.ID = "PrimaryBenchmark";
this.Type = this.GetType();
this.Name = "Primary Benchmark";
}
public string ID {get;set;}
public Type Type {get;set;}
public string Name {get;set;}
}
Эти два объекта будут добавлены в коллекцию Benchmark List аналитического объекта в коде WinForms:
private void Form1_Load(object sender, EventArgs e)
{
Analytic analytic = new Analytic();
analytic.AddBenchmark(new PrimaryBenchmark());
analytic.AddBenchmark(new Vehicle());
propertyGrid1.SelectedObject = analytic;
}
Вот снимок экрана с выводом в PropertiesGrid. Обратите внимание, что свойство, представленное как перечисление, получает красивый раскрывающийся список без каких-либо действий, но свойство, представленное как List on, получает значение (Collection). Когда вы нажимаете (Коллекция), вы открываете редактор Коллекции, а затем видите каждый объект и их соответствующие свойства:
Это не то, что я ищу. Как и на моем первом снимке экрана в этом посте, я пытаюсь отобразить коллекцию свойств Benchmark для List в виде раскрывающегося списка, который показывает свойство name объекта как текст того, что может быть отображено ...
Спасибо