我有一个使用 .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。