发布到ComboBox DropDownList时处理Nullable属性

时间:2013-12-03 13:27:57

标签: c# winforms combobox

我有一个自定义类Diary,它具有可为空的属性DeadlineType

在我的一个表单上,我在DropDownList模式下有一个ComboBox,其中填充了DeadlineType可以采用的所有可能值。当选择日记时,表单中会填充所有属性,但是我遇到了DeadlineType属性的问题,当它为null时,它需要的代码比我认为的要多。

if (amendDiary.DeadlineType != null)    
{
    cboDeadlineType.Text = amendDiary.DeadlineType.ToString();
}
else
{
    cboDeadlineType.Text = null;
}

我确信必须有一种更简洁的方法来实现这一目标,或者当然希望如此,因为在我的应用程序中这种情况会重复很多,即将空值发布到ComboBoxes。

我确实尝试了

cboDeadlineType.Text = amendDiary.DeadlineType.ToString() ?? null

但是这会导致“对象未设置为实例”错误。

2 个答案:

答案 0 :(得分:3)

试试这个:

cboDeadlineType.Text = (amendDiary.DeadlineType ?? "").ToString();

请注意,将ComboBox.Text设置为null与将其设置为""相同(在两种情况下,组合文本均为空)。

另一种解决方案是使用Convert.ToString方法:

cboDeadlineType.Text = Convert.ToString(amendDiary.DeadlineType);

使用该解决方案,如果输入为null,则cboDeadlineType.Text将完全分配给null

答案 1 :(得分:0)

cboDeadlineType.Text = amendDiary.DeadlineType!=null ?amendDiary.ToString() :"";