/// <summary> /// Left mouse click: check/uncheck the item. /// Middle mouse click: remove item. /// Right mouse click: send item from chList1 to chList2. /// </summary> /// <param name="chList1"> The handled checkedListBox. </param> /// <param name="chList2"> The dual checkedListBox. </param> /// <param name="e"> The mouse click event. </param> public static void DualChListMouseEvent(CheckedListBox chList1, CheckedListBox chList2, MouseEventArgs e, Point mousePosition, bool useDual = true) { if (e.Button == System.Windows.Forms.MouseButtons.Right) { for (int i = 0; i < chList1.Items.Count; i++) { if (i != 0 || useDual) { if (chList1.GetItemRectangle(i).Contains(chList1.PointToClient(mousePosition))) { chList2.AddOrderedFromBottom(chList1.GetText(i), chList1.GetItemChecked(i)); chList1.Items.RemoveAt(i); } } } } else if (e.Button == System.Windows.Forms.MouseButtons.Middle) { for (int i = 0; i < chList1.Items.Count; i++) { if (i != 0 || useDual) { if (chList1.GetItemRectangle(i).Contains(chList1.PointToClient(mousePosition))) { chList1.Items.RemoveAt(i); } } } } else if (e.Button == System.Windows.Forms.MouseButtons.Left) { for (int i = 0; i < chList1.Items.Count; i++) { if (chList1.GetItemRectangle(i).Contains(chList1.PointToClient(mousePosition))) { switch (chList1.GetItemCheckState(i)) { case CheckState.Checked: chList1.SetItemCheckState(i, CheckState.Unchecked); break; case CheckState.Indeterminate: case CheckState.Unchecked: chList1.SetItemCheckState(i, CheckState.Checked); break; } } } } }
public static void InsertAt(this CheckedListBox chList, int index, string item, bool check) { CheckedListBox aux = new CheckedListBox(); bool itemAdded = false; for (int i = 0; i < chList.Items.Count; i++) { if (i == index && !itemAdded) { aux.Items.Add(item, check); itemAdded = true; i--; } else { aux.Items.Add(chList.GetText(i), chList.GetItemChecked(i)); } } if (!itemAdded) { chList.Items.Add(item, check); } else { chList.Items.Clear(); for (int i = 0; i < aux.Items.Count; i++) chList.Items.Add(aux.GetText(i), aux.GetItemChecked(i)); } }