繁体   English   中英

可以为null的类型的datagridview组合框下拉列表中的空值

[英]Empty value in datagridview combobox dropdown for nullable type

我有一个可以为空的enum绑定到一个组合框细胞。 comboxbox样式设置为下拉列表。

由于我的枚举可以为空,我期待Dropdown有一个空值,但似乎并非如此。

除了在枚举中添加“NULL”值并跟踪它之外,是否有任何内置的强制执行方式?

据我所知,Windows Forms 绑定没有像WPF TargetNullValue属性那样的东西,所以唯一可行的方法是处理FormatParse事件:

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());
}

在DataSource中使用DBNull.Value:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM