11

我有DataTable以下结构:

ID | VALUE
----------------
1  | Item 1
2  | Item 2
3  | Item 3

我通过将每一行添加为一个项目来将来自的值显示DataTable到一个控件中。CheckedListBox

但是我怎样才能包含 ID?CheckedListBox 控件是否有“DisplayMember”和“ValueMember”之类的属性?

4

4 回答 4

17

是的,在 上有DisplayMemberValueMember属性CheckedListBox,尽管文档ValueMember声称它“与此类无关”。

DisplayMember这是一个显示工作的快速示例:

using System;
using System.Drawing;
using System.Windows.Forms;

class Test
{
    static void Main()
    {
        CheckedListBox clb = new CheckedListBox {
            DisplayMember = "Foo",
            ValueMember = "Bar",
            Items = {
                new { Foo = "Hello", Bar = 10 },
                new { Foo = "There", Bar = 20 }
            }
        };
        Form f = new Form
        {
            Controls = { clb }
        };
        Application.Run(f);
    }
}

另请注意,文档状态:

您不能将数据绑定到 CheckedListBox。为此,请使用 ComboBox 或 ListBox。有关详细信息,请参阅如何:将 Windows 窗体 ComboBox 或 ListBox 控件绑定到数据。

鉴于上面的代码有效,大概它正在谈论更高级的数据绑定,使用DataSource

于 2010-09-27T05:25:24.947 回答
8

DataSource、DisplayMember 和 ValueMember 属性可用于此控件,但它们不会显示在 IntelliSense 中:MSDN

不过,您应该可以使用它们。

于 2010-09-27T05:29:21.053 回答
2

是的,CheckedListBox 中有“显示成员”和“值成员”属性。

您可以像在组合框中一样设置属性:

   public void PopulateListBox(System.Windows.Forms.CheckedListBox lb, string displayMember, string valueMember, DataTable data)
   {
        lb.DataSource = data; // where data is the datatable. datatable filled up with //data fetched from database.
        lb.ValueMember = valueMember;
        lb.DisplayMember = displayMember;
   }
于 2012-11-13T13:29:30.093 回答
0

法国文件说:Cette propriété ne s'applique pas à cette classe。“此属性不适用于此类”。在我们的文档中看不到这一小行文本...

于 2014-09-09T09:50:51.287 回答