C# winform项目中ListView控件使用CheckBoxes属性实现单选功能
在做项目时需要使用ListView控件的CheckBoxes属性显示,还要在点击行时自动选中CheckBoxes和点击选中CheckBoxes时自动显示正行选中状态的单选功能。
效果图:
主要利用两个事件:listView1_ItemCheck和listView1_SelectedIndexChanged事件。
上代码:
- private void listView1_ItemCheck(object sender, ItemCheckEventArgs e)
- {
- if (!listView1.Items[e.Index].Checked)//如果点击的CheckBoxes没有选中
- {
- foreach (ListViewItem lv in listView1.Items)
- {
- if (lv.Checked)//取消所有已选中的CheckBoxes
- {
- lv.Checked = false;
- lv.Selected = false;
- // lv.BackColor = Color.White;
- }
- }
- listView1.Items[e.Index].Selected = true;
- // lv.Checked = false;
- }
- //int count = listView1.Items.Count;
- //ListViewItem item = listView1.Items[e.Index];
- //if (item.Checked)
- //{
- // for (int i = 0; i < count; i++)
- // {
- // if (i != e.Index)
- // {
- // ListViewItem item1 = listView1.Items[i];
- // item1.Checked = false;
- // }
- // }
- //}
- }
- private void listView1_SelectedIndexChanged(object sender, EventArgs e)
- {
- foreach (ListViewItem lv in listView1.Items)
- {
- if (lv.Selected)
- {
- //if (lv.Checked)
- //{
- // //lv.Checked = false;
- //}
- //else
- //{
- lv.Checked = true;
- //}
- }
- else
- {
- if (listView1.SelectedIndices.Count>0)
- {
- if (lv.Checked)
- {
- lv.Checked = false;
- }
- }
- }
- }
- }