Хорошо, таким образом, моя терминология когда дело доходит до C# не является большой, таким образом, я попытаюсь объяснить это с небольшим примером. При создании класса, который Вы используете в PropertyGrid, и у Вас есть следующие значения:
class Test
{
public Point example { get; set; }
}
Это произведет PropertyGrid, который имеет расширяемый объект "пример", который имеет поля X and Y для создания "Точки".
Я пытаюсь создать объектное "имя", которое имеет поля "firstname" и "lastname", таким образом, я имею:
class Test
{
public Name example { get; set; }
}
public struct Name
{
public string firstname { get; set; }
public string lastname { get; set; }
}
Это однако не работает, как предназначено.
Я думаю, что должен переопределить некоторый метод (методы) для получения этой работы, однако так как у меня действительно нет терминологии вниз для PropertyGrids, для меня трудно найти решение.
Любая справка была бы большой.
После долгих поисков я наконец-то смог разобраться, недостающим ключевым словом было "ExpandableObjectConverter."
В любом случае, вот пример кода:
public Form1()
{
InitializeComponent();
Person x = new Person();
propertyGrid1.SelectedObject = x;
}
public class Person
{
public string Caption { get; set; }
[TypeConverter(typeof(ExpandableObjectConverter))]
public class Name
{
public string FirstName { get; set; }
public string LastName { get; set; }
public override string ToString()
{
return LastName + ", " + FirstName;
}
}
private Name _name = new Name();
public Name testName
{
get { return _name; }
}
}
PropertyGrids точно сбивают с толку.
Я считаю, что в данном случае автоимплиментированные определения свойств
public string Name { get; set; }
работают не для типов struct, а для типов class. В первом примере Point
является типом класса.
Try
class Name
{
public string FirstName {get;set;}
public string LastName {get;set;}
}
then
class Test
{
public Name example {get; set;}
}
may work.