如何删除 PropertyGrid 中的默认显示字符串“(Collection)”?
How can I delete the default display string "(Collection)" in a PropertyGrid?
我的目标是通过自己的 UITypeEditor 替换 PropertyGrid 属性 的显示值。
但是我无法删除始终显示的默认显示字符串“(Collection)”。
我尝试了 e.Graphics.Clear 并用白色画笔绘制到图形中。但这是行不通的。这是我的代码:
public class MyUITypeEditor : UITypeEditor
{
public override void PaintValue(PaintValueEventArgs e)
{
// Not working:
//e.Graphics.Clear(Color.White);
//using (SolidBrush brush = new SolidBrush(Color.White))
//{
// e.Graphics.FillRectangle(brush, e.Bounds);
//}
e.Graphics.DrawString(
"0|0, 10|10",
new Font("Arial", 10f, FontStyle.Bold),
new SolidBrush(Color.Black),
new Point(0, 0));
}
public override bool GetPaintValueSupported(ITypeDescriptorContext context)
{
return true;
}
}
您需要做的是定义一个新的 TypeConverter
元素并覆盖以下方法:
public class test_typeconverter : TypeConverter
{
public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture,
object value, Type destinationType)
=> "Text requiered";
public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) => true;
public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType) => false;
}
然后,您必须将此类型定义为要在 属性 网格中显示的集合的类型转换器,如下所示:
[TypeConverter(typeof(test_typeconverter))]
public List<int> Values { get; set; }
我的目标是通过自己的 UITypeEditor 替换 PropertyGrid 属性 的显示值。 但是我无法删除始终显示的默认显示字符串“(Collection)”。
我尝试了 e.Graphics.Clear 并用白色画笔绘制到图形中。但这是行不通的。这是我的代码:
public class MyUITypeEditor : UITypeEditor
{
public override void PaintValue(PaintValueEventArgs e)
{
// Not working:
//e.Graphics.Clear(Color.White);
//using (SolidBrush brush = new SolidBrush(Color.White))
//{
// e.Graphics.FillRectangle(brush, e.Bounds);
//}
e.Graphics.DrawString(
"0|0, 10|10",
new Font("Arial", 10f, FontStyle.Bold),
new SolidBrush(Color.Black),
new Point(0, 0));
}
public override bool GetPaintValueSupported(ITypeDescriptorContext context)
{
return true;
}
}
您需要做的是定义一个新的 TypeConverter
元素并覆盖以下方法:
public class test_typeconverter : TypeConverter
{
public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture,
object value, Type destinationType)
=> "Text requiered";
public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) => true;
public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType) => false;
}
然后,您必须将此类型定义为要在 属性 网格中显示的集合的类型转换器,如下所示:
[TypeConverter(typeof(test_typeconverter))]
public List<int> Values { get; set; }