可空类型的datagridview组合框下拉框中的空值

本文关键字:空值 组合 类型 datagridview | 更新日期: 2023-09-27 18:18:04

我有一个绑定到组合框单元格的可空枚举。组合框样式设置为下拉式

由于我的enum是可空的,我希望下拉菜单有一个空值,但这似乎不是情况。

是否有任何内置的方法来强制执行这一点,除了添加一个"NULL"值到enum并跟踪它?

可空类型的datagridview组合框下拉框中的空值

据我所知,Windows窗体绑定没有任何像WPF TargetNullValue属性,所以唯一可能的方法是处理格式和解析事件:

Binding binding = new Binding // ..
comboBox.DataBindings.Add(binding);
binding.Format += (sender, eventArgs) =>
{
    if (eventArgs.Value == null)
        eventArgs.Value = "NULL";
    else
        eventArgs.Value = eventArgs.Value.ToString();
}
binding.Parse += (sender, eventArgs) =>
{
    if (eventArgs.Value == "NULL")
        eventArgs.Value = null;
    else
        eventArgs.Value = Enum.Parse(typeof(MyEnum), eventArgs.Value.ToString());
}

使用DBNull。数据源中的值:

    var col = new DataGridViewComboBoxColumn();
    col.DataSource = new Object[] { DBNull.Value, MyEnum.Value1, MyEnum.Value2  };