我在一个表单中有一个databinded checkedlistbox,我想知道是否甚至可以使用对象的某个属性对每个列表框项的复选框进行数据绑定。
感谢您提前提供任何帮助:)
编辑:也许我的问题被误解了。
我想知道是否可以对CheckedListBox的每个项目的复选框进行数据绑定。我知道如何数据绑定到源以及如何通过迭代itmes以编程方式更改条目。我不知道的是,是否可以上课 它实现了INotifyPropertyChanged,以便当“CheckedState”属性更改CheckedListBox更新时。
答案 0 :(得分:32)
根据Samich的回答,这是一个完整的例子,绑定源是Object
private void Form1_Load(object sender, EventArgs e)
{
List<randomClass> lst = new List<randomClass>();
lst.Add(new randomClass());
lst.Add(new randomClass());
lst.Add(new randomClass());
lst.Add(new randomClass());
lst.Add(new randomClass());
lst.Add(new randomClass());
((ListBox)this.checkedListBox1).DataSource = lst;
((ListBox)this.checkedListBox1).DisplayMember = "Name";
((ListBox)this.checkedListBox1).ValueMember = "IsChecked";
for (int i = 0; i < checkedListBox1.Items.Count; i++)
{
randomClass obj = (randomClass)checkedListBox1.Items[i];
checkedListBox1.SetItemChecked(i, obj.IsChecked);
}
}
}
public class randomClass
{
public bool IsChecked { get; set; }
public string Name { get; set; }
public randomClass()
{
this.IsChecked = true;
Name = "name1";
}
}
randomClass
用于演示目的
答案 1 :(得分:7)
您可以在此处找到答案:Using datasource with CheckBoxList
var checkBoxList = (ListBox)MyCheckBoxList;
checkBoxList.DataSource = dataSource;
checkBoxList.DisplayMember = "name";
checkBoxList.ValueMember = "enabled";
确保ValueMember
的类型为bool
。
答案 2 :(得分:3)
我刚刚得到了如何将sql中的表数据化为一个没有压力的checkboxlist。我很高兴分享它。 我手动添加了它们......
SqlConnection conn = new SqlConnection();
SqlCommand cmd = new SqlCommand();
conn.ConnectionString = "Data Source=MICMIKE\\SQLEXPRESS;Initial Catalog=Enterprise;Integrated Security=True";
conn.Open();
string query = "Select Position from Position";// position column from position table
cmd.Connection = conn;
cmd.CommandText = query;
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
string myItem = dr["Position"].ToString();
checkedListBox1.Items.Add(myItem, true);//true means check the items. use false if you don't want to check the items or simply .....Items.Add(myItem);
}
要访问核对表列表中选中的项目,请使用
foreach(object item in Checkedlistbox1.CheckedItems)
{
string itemchecked = item.ToString();
MessageBox.Show(itemchecked);// This will show all the checked items in the checklistbox.
}
这真的很有效。我现在就明白了。 我希望你喜欢它!