winforms设计器中自定义控件的Format属性

时间:2018-05-22 13:54:09

标签: c# winforms windows-forms-designer

我有一个具有以下属性的自定义控件

public ulong Mask { get; set; }

当我使用该控件时,该属性在编辑器中显示为十进制数字。

enter image description here

有没有办法将此属性值显示为十六进制?如果有办法将十六进制数字分成四位数组,那就更好了。谢谢!

1 个答案:

答案 0 :(得分:3)

enter image description here提供了您需要的大部分功能,因为它支持十六进制格式的转换。所有必要的是覆盖ConvertTo方法以显示为十六进制。

public class UInt64HexConverter : UInt64Converter
{
    private static Type typeUInt64 = typeof(UInt64);

    public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
    {
        if (destinationType == null)
        {
            throw new ArgumentNullException("destinationType");
        }

        if (((destinationType == typeof(string)) && (value != null)) && typeUInt64.IsInstanceOfType(value))
        {
            UInt64 val = (UInt64)value;
            return "0x" + val.ToString("X");
        }

        if (destinationType.IsPrimitive)
        {
            return Convert.ChangeType(value, destinationType, culture);
        }
        return base.ConvertTo(context, culture, value, destinationType);
    }
}

使用示例:

class BitControl : Control
{
    [TypeConverter(typeof(UInt64HexConverter))]
    public ulong Mask { get; set; }
}