没人回答,自己来
PropertyGrid自定义UserControl
实现从UserControl中设定PropertyGrid属性项的值,不让用户直接编辑但又可以通过下拉或弹出窗体让用户选择,
只显示UserControl中对象的Name值,就如上图所示效果。通过指定Converter和Editor可以解决此问题。
定义属性项:
public class TestClass
{
public TestClass()
{
}
private ItemContent _itemContent;
[EditorAttribute(typeof(ContentEditor), typeof(UITypeEditor)),
TypeConverterAttribute(typeof(ConentConverter)),
DescriptionAttribute("Select item content")]
public ItemContent Content
{
get { return _itemContent; }
set { _itemContent = value; }
}
}
//定义属性内容类:
public class ItemContent
{
public ItemContent()
{
}
private string _type = "Type";
private string _content = "Content";
public string Type
{
get { return _type; }
}
public string Content
{
get { return _content; }
set { _content = value; }
}
}
//定义Converter:
public class ConentConverter : ExpandableObjectConverter
{.....................}
//定义Editor:
public class ContentEditor : UITypeEditor
{...........}
public class SelectControl:ListBox
{.............}
最后将包含有ItemContent属性的类对象赋给PropertyGrid的SelectedObject即可,就能实现上图所示效果。
[[it] 本帖最后由 ghl2312 于 2008-11-6 14:29 编辑 [/it]]