好吧所以我在C#方面的术语并不是很好,所以我将尝试用一个小例子解释一下。如果您创建了一个在PropertyGrid中使用的类,并且您具有以下值:
class Test
{
public Point example { get; set; }
}
这将生成一个PropertyGrid,它具有一个可扩展的对象“example”,其中包含字段X和Y,以便创建一个“Point”。
我正在尝试创建一个对象“name”,其中包含“firstname”和“lastname”字段,所以我有:
class Test
{
public Name example { get; set; }
}
public struct Name
{
public string firstname { get; set; }
public string lastname { get; set; }
}
然而,这并没有按预期运作。
我认为我需要覆盖一些方法才能使其正常工作,但是由于我没有真正使用PropertyGrids的术语,因此我很难找到解决方案。
任何帮助都会很棒。
答案 0 :(得分:15)
经过大量的回顾,我终于能够弄明白,丢失的关键字是“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肯定令人困惑。
答案 1 :(得分:1)
我相信在这个例子中自动诠释了属性定义
public string Name { get; set; }
不适用于结构类型,但适用于类类型。在第一个示例中,Point
是类类型。
尝试
class Name
{
public string FirstName {get;set;}
public string LastName {get;set;}
}
然后
class Test
{
public Name example {get; set;}
}
可能会有效。