WinForms 组件的 Nullable 属性的 NullableConverter

NullableConverter for Nullable properties of WinForms component

如果我编写一个 WinForms 可视化控件并希望将其属性之一设为值类型 nullable,我是否需要为其创建一个特殊的类型转换器或编辑器以使其在VS 属性 网格?

例如,.NET Framework 提供 NullableConverter class. Do I need to attach it to my nullable property via the TypeConverterAttribute?

我试图将 int 属性之一转换为 int?,并且 属性 在 属性 网格中似乎工作正常。我可以指定一个数值或清除此 属性 以使其再次为空。

属性 网格使用 TypeDescriptor 获取其转换器信息。例如,如果你有这个 class:

public class MyClass
{
    public int? NullableInteger { get; set; }
}

使用此代码:

// get first property's type converter
var cv = TypeDescriptor.GetProperties(typeof(MyClass))[0].Converter;

您将获得 TypeConverter 对应 NullableInteger 属性,这已经是 NullableConverter

因此,您不必手动声明它。