我有一个绑定到表的CheckedListBox。我想要从我检查的列表中获取任何项目的ValueMember。当前我正在运行循环遍历列表中的所有选中项目以显示ValueMember,结果,这向我展示了几个我不想要的消息框。我想,在任何情况下,如果我检查任何项目,那么它应该向我显示其相应的ValueMember.My当前代码是
foreach (DataRowView view in clbAnnually.CheckedItems)
{
MessageBox.Show(view[clbAnnually.ValueMember].ToString());
}
我在SO中寻找类似的问题,但他们没有解决我的问题。请提供代码建议。
答案 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());
}