如何更改.NET PropertyGrid中使用的控件的类型

时间:2020-03-05 18:56:00  来源:igfitidea点击:

我有一个使用.NET PropertyGrid控件的Windows应用程序。是否可以更改用于属性值字段的控件类型?

我希望能够使用RichTextBox来更好地格式化输入值。
可以在不创建自定义编辑器类的情况下完成此操作吗?

解决方案

回答

我认为我们正在寻找的是自定义类型描述符。
我们可以阅读一些内容并从这里开始:http://www.codeproject.com/KB/miscctrl/bending_property.aspx

我不确定我们可以执行任何所需的控制,但是那篇文章使我开始研究propertygrids。

回答

我们可以控制PropertyGrid是显示简单的编辑框,下拉箭头还是省略号控件。

查找EditorAttribute,然后从那里继续。我确实在某个地方有样品;我会尝试将其挖掘出来。

回答

要在用户选择属性网格值时添加自己的自定义编辑,我们需要实现一个从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; }
}