我有一个具有以下属性的自定义控件
public ulong Mask { get; set; }
当我使用该控件时,该属性在编辑器中显示为十进制数字。
有没有办法将此属性值显示为十六进制?如果有办法将十六进制数字分成四位数组,那就更好了。谢谢!
答案 0 :(得分:3)
提供了您需要的大部分功能,因为它支持十六进制格式的转换。所有必要的是覆盖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; }
}