【发布时间】:2008-09-16 13:55:47
【问题描述】:
我有一个使用 .NET PropertyGrid 控件的 Windows 应用程序。是否可以更改用于属性值字段的控件类型?
我希望能够使用 RichTextBox 来更好地格式化输入值。 这可以在不创建自定义编辑器类的情况下完成吗?
【问题讨论】:
我有一个使用 .NET PropertyGrid 控件的 Windows 应用程序。是否可以更改用于属性值字段的控件类型?
我希望能够使用 RichTextBox 来更好地格式化输入值。 这可以在不创建自定义编辑器类的情况下完成吗?
【问题讨论】:
要在用户选择属性网格值时添加您自己的自定义编辑,您需要实现一个派生自 UITypeEditor 的类。然后,您可以选择在属性区域下方仅显示一个小弹出窗口或一个完整的对话框。
很好的是您可以重用现有的实现。因此,要添加多行编辑字符串的功能,您只需执行此操作...
[Editor(typeof(MultilineStringEditor), typeof(UITypeEditor))]
public override string Text
{
get { return _string; }
set { _string = value; }
}
他们为您提供的另一个不错的功能是能够编辑字符串数组...
[Editor("System.Windows.Forms.Design.StringArrayEditor,
System.Design, Version=2.0.0.0,
Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a",
typeof(UITypeEditor))]
public string[] Lines
{
get { return _lines; }
set { _lines = value; }
}
【讨论】:
您可以控制 PropertyGrid 是否显示简单的编辑框、下拉箭头或省略号控件。
查找 EditorAttribute,然后从那里继续。我确实在某处有样品;我会努力挖掘出来的。
【讨论】:
我认为您正在寻找的是自定义类型描述符。 您可以阅读一下并从这里开始:http://www.codeproject.com/KB/miscctrl/bending_property.aspx
我不确定你是否可以做任何你想做的控制,但那篇文章让我开始了解 propertygrids。
【讨论】: