【发布时间】:2014-08-13 17:05:32
【问题描述】:
我有一个可空枚举绑定到组合框单元格。组合框样式设置为下拉。
由于我的枚举可以为空,我希望 Dropdown 有一个空值,但情况似乎并非如此。
除了向枚举添加一个“NULL”值并跟踪它之外,是否有任何内置方式来执行此操作?
【问题讨论】:
标签: c# winforms datagridview enums datagridviewcombobox
我有一个可空枚举绑定到组合框单元格。组合框样式设置为下拉。
由于我的枚举可以为空,我希望 Dropdown 有一个空值,但情况似乎并非如此。
除了向枚举添加一个“NULL”值并跟踪它之外,是否有任何内置方式来执行此操作?
【问题讨论】:
标签: c# winforms datagridview enums datagridviewcombobox
据我所知,Windows 窗体binding 没有类似WPF TargetNullValue property 的东西,所以唯一可能的方法是处理Format 和Parse 事件:
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.Value:
var col = new DataGridViewComboBoxColumn();
col.DataSource = new Object[] { DBNull.Value, MyEnum.Value1, MyEnum.Value2 };
【讨论】: