C# winform项目中ListView控件使用CheckBoxes属性实现单选功能

C# winform项目中ListView控件使用CheckBoxes属性实现单选功能

在做项目时需要使用ListView控件的CheckBoxes属性显示,还要在点击行时自动选中CheckBoxes和点击选中CheckBoxes时自动显示正行选中状态的单选功能。

效果图:

C# winform项目中ListView控件使用CheckBoxes属性实现单选功能

主要利用两个事件:listView1_ItemCheck和listView1_SelectedIndexChanged事件。

上代码:

  1. private void listView1_ItemCheck(object sender, ItemCheckEventArgs e)
  2. {
  3. if (!listView1.Items[e.Index].Checked)//如果点击的CheckBoxes没有选中
  4. {
  5. foreach (ListViewItem lv in listView1.Items)
  6. {
  7. if (lv.Checked)//取消所有已选中的CheckBoxes
  8. {
  9. lv.Checked = false;
  10. lv.Selected = false;
  11. // lv.BackColor = Color.White;
  12. }
  13. }
  14. listView1.Items[e.Index].Selected = true;
  15. // lv.Checked = false;
  16. }
  17. //int count = listView1.Items.Count;
  18. //ListViewItem item = listView1.Items[e.Index];
  19. //if (item.Checked)
  20. //{
  21. //    for (int i = 0; i < count; i++)
  22. //    {
  23. //        if (i != e.Index)
  24. //        {
  25. //            ListViewItem item1 = listView1.Items[i];
  26. //            item1.Checked = false;
  27. //        }
  28. //    }
  29. //}
  30. }
    1. private void listView1_SelectedIndexChanged(object sender, EventArgs e)
    2. {
    3. foreach (ListViewItem lv in listView1.Items)
    4. {
    5. if (lv.Selected)
    6. {
    7. //if (lv.Checked)
    8. //{
    9. //    //lv.Checked = false;
    10. //}
    11. //else
    12. //{
    13. lv.Checked = true;
    14. //}
    15. }
    16. else
    17. {
    18. if (listView1.SelectedIndices.Count>0)
    19. {
    20. if (lv.Checked)
    21. {
    22. lv.Checked = false;
    23. }
    24. }
    25. }
    26. }
    27. }
上一篇:java的nio之:java的bio流下实现的socket服务器同步阻塞模型和socket的伪异步的socket服务器的通信模型


下一篇:POJ 2976 Dropping tests:01分数规划【二分】