我有DataTable
以下结构:
ID | VALUE
----------------
1 | Item 1
2 | Item 2
3 | Item 3
我通过将每一行添加为一个项目来将来自的值显示DataTable
到一个控件中。CheckedListBox
但是我怎样才能包含 ID?CheckedListBox 控件是否有“DisplayMember”和“ValueMember”之类的属性?
我有DataTable
以下结构:
ID | VALUE
----------------
1 | Item 1
2 | Item 2
3 | Item 3
我通过将每一行添加为一个项目来将来自的值显示DataTable
到一个控件中。CheckedListBox
但是我怎样才能包含 ID?CheckedListBox 控件是否有“DisplayMember”和“ValueMember”之类的属性?
是的,在 上有DisplayMember
和ValueMember
属性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
?
DataSource、DisplayMember 和 ValueMember 属性可用于此控件,但它们不会显示在 IntelliSense 中:MSDN
不过,您应该可以使用它们。
是的,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;
}
法国文件说:Cette propriété ne s'applique pas à cette classe。“此属性不适用于此类”。在我们的文档中看不到这一小行文本...