DisplayMember在DataSource上重置= null

8 c# user-interface controls combobox datasource

我有一个ComboBox,其项目使用DataSource属性设置.DataSource是自定义对象的集合(具有字符串属性'Value'和int属性'Id').在初始化控件中,我将DisplayMember设置为Value,将ValueMember设置Id.现在我试着通过调用清除DataSource,

myComboBox.DataSource = null;
Run Code Online (Sandbox Code Playgroud)

当我这样做时,我的DisplayMember会自动重置为"".我正确清理DataSource吗?这是我应该表现的方式吗?

Mar*_*ell 4

我可以重现它......这不是我所期望的,但看起来你只需要DisplayMember稍后设置背面即可。

从 Reflector 来看,这是故意的:

        if (value == null)
        {
            this.DisplayMember = "";
        }
Run Code Online (Sandbox Code Playgroud)

不确定背后的原因,但简单地说:

string oldDisplayMember = cbo.DisplayMember;
cbo.DataSource = null;
cbo.DisplayMember = oldDisplayMember;
Run Code Online (Sandbox Code Playgroud)

不漂亮,但它会起作用。