我有一个 CheckedListBox,我用一个自定义“DBitemtype”对象列表填充,我首先设置 DataSource,然后是 CheckedListBox“clbItemType”的 DisplayMember 和 ValueMember 属性。现在在运行时,用户可以选择更改项目,所以我有一个事件,通过首先将 DataSource 设置为 null,然后将 DataSource 设置为新列表,将 CheckedListBox 与相同“DBitemtype”对象的不同列表重新绑定,然后将 DisplayMember 和 ValueMember 属性再次设置为完全相同的值,如下所示:
clbItemType.DataSource = null;
clbItemType.DataSource = _SelectedItemTypes; // A List<DBitemtype>
clbItemType.DisplayMember = DBitemtype.Columns.ItemName; // String constant - value "ItemName"
clbItemType.ValueMember = DBitemtype.Columns.ID; // String constant - value "ID"
clbItemType.Refresh();
用于 DisplayMember 和 ValueMember 的字符串常量都描述了 DBitemtype 类中的公共字符串属性。
我遇到的问题是,有时 DisplayMember 设置为“ItemName”,有时它没有设置,当我单步执行代码时它只是保持为“”。我似乎无法找到一种模式来解释为什么它只偶尔发生。没有错误或异常被抛出。
我能找到的是“如果无法设置 DisplayMember 的新值,则保留以前的值。” 来自这里的 msdn 文章CheckedListBox.DisplayMember 属性
所以我想这是一个两部分的问题:
1)其他人有这个问题吗?
2) 哪些条件会导致 DisplayMember 无法设置?