C# 是否可以更改PropertyGrid中显示的文本?

C# 是否可以更改PropertyGrid中显示的文本?,c#,winforms,C#,Winforms,当所选对象是数组时,是否有方法更改PropertyGrid控件中显示的文本(“Item_Type[]数组”) 我喜欢网格显示层次结构中每个项目的方式,但我认为如果可以更改或删除“Item_Type[]Array”文本会更好 您可以通过使用自定义转换器来实现: public class Test { [TypeConverter(typeof(ConverterArray))] public string[] Property { get; set; } = new[] { "1"

当所选对象是数组时,是否有方法更改PropertyGrid控件中显示的文本(“Item_Type[]数组”)

我喜欢网格显示层次结构中每个项目的方式,但我认为如果可以更改或删除“Item_Type[]Array”文本会更好


您可以通过使用自定义转换器来实现:

public class Test
{
    [TypeConverter(typeof(ConverterArray))]
    public string[] Property { get; set; } = new[] { "1", "2", "3" };
}

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        propertyGrid1.SelectedObject = new Test();
    }
}

public class ConverterArray : TypeConverter
{
    public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destType)
    {
        if (destType == typeof(string))
            return "An array kk?";
        return base.ConvertTo(context, culture, value, destType);
    }
}
不带转换器的屏幕截图,带有:


要查看和编辑作为可扩展列表的项(以索引作为名称),请从
ArrayConverter
继承转换器

如果需要删除/添加项,则必须实现自定义编辑器(通常,您会将此设置为另一个表单,并使用模态编辑器
UITypeEditorEditStyle.modal
):


您可以通过使用自定义转换器来实现这一点:

public class Test
{
    [TypeConverter(typeof(ConverterArray))]
    public string[] Property { get; set; } = new[] { "1", "2", "3" };
}

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        propertyGrid1.SelectedObject = new Test();
    }
}

public class ConverterArray : TypeConverter
{
    public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destType)
    {
        if (destType == typeof(string))
            return "An array kk?";
        return base.ConvertTo(context, culture, value, destType);
    }
}
不带转换器的屏幕截图,带有:


要查看和编辑作为可扩展列表的项(以索引作为名称),请从
ArrayConverter
继承转换器

如果需要删除/添加项,则必须实现自定义编辑器(通常,您会将此设置为另一个表单,并使用模态编辑器
UITypeEditorEditStyle.modal
):


是的,有自定义转换器。您必须为返回数组的属性添加属性。是否有示例代码或链接?是的,带有自定义转换器。您必须为返回数组的属性添加属性。您是否有示例代码或链接?但它不再显示层次结构中的项目。在这种情况下,您希望查看索引还是可以使用modal
CollectionEditor
,自定义转换器应继承
ArrayConverter
我希望保留原始外观,但不使用“Item_Type[]Array”,谢谢@IvanStoev。我也在使用自定义编辑器(
UITypeEditorEditStyle.Modal
-另一个表单)来添加/删除项目,但保留外观(索引为名称和可编辑值)
ArrayConverter
确实应该用作基础。但它不再显示层次结构中的项目。您想查看索引还是可以使用modal
CollectionEditor
?在这种特殊情况下,自定义转换器应该继承
ArrayConverter
我想保留原始外观,但不保留“Item_Type[]Array”感谢@IvanStoev。我使用的是自定义编辑器(
UITypeEditorEditStyle.Modal
-另一种形式)也可以添加/删除项目,但为了保留外观(索引为名称和可编辑值)
ArrayConverter
确实应该用作基础。