在c#中显示CheckedListBox的ValueMember

时间:2016-05-19 21:50:10

标签: c#

我有一个绑定到表的CheckedListBox。我想要从我检查的列表中获取任何项目的ValueMember。当前我正在运行循环遍历列表中的所有选中项目以显示ValueMember,结果,这向我展示了几个我不想要的消息框。我想,在任何情况下,如果我检查任何项目,那么它应该向我显示其相应的ValueMember.My当前代码是

foreach (DataRowView view in clbAnnually.CheckedItems)
{
  MessageBox.Show(view[clbAnnually.ValueMember].ToString());
} 

我在SO中寻找类似的问题,但他们没有解决我的问题。请提供代码建议。

1 个答案:

答案 0 :(得分:1)

使用CheckedListBox.ItemCheck事件。当用户检查项目并提供有关已检查项目的所有信息时,它会被引发。

DataTable table = new DataTable();
table.Columns.Add("ID", typeof(int));
table.Columns.Add("Name");

table.Rows.Add(0, "Name 0");
table.Rows.Add(1, "Name 1");
table.Rows.Add(2, "Name 2");

checkedListBox1.DataSource = table;
checkedListBox1.DisplayMember = "Name";
checkedListBox1.ValueMember = "ID";

checkedListBox1.ItemCheck += CheckedListBox1_ItemCheck;

1

private void CheckedListBox1_ItemCheck(object sender, ItemCheckEventArgs e) {
    CheckedListBox clb = (CheckedListBox)sender;
    DataRowView row = (DataRowView)clb.Items[e.Index];
    MessageBox.Show(row[clb.ValueMember].ToString());
}

2

private void CheckedListBox1_ItemCheck(object sender, ItemCheckEventArgs e) {
    CheckedListBox clb = (CheckedListBox)sender;
    MessageBox.Show(clb.SelectedValue.ToString());
}