Exemple #1
0
        private static void HandleSelectAll(ItemCheckEventArgs e, ToolStripCheckedListBox checkedList, int selectAllIndex)
        {
            if (e.Index == selectAllIndex)
            {
                if (e.NewValue == CheckState.Checked)
                {
                    checkedList.CheckAll();
                }

                if (e.NewValue == CheckState.Unchecked)
                {
                    checkedList.UncheckAll();
                }

                return;
            }

            var count = checkedList.CheckedItems.Count;

            if (checkedList.GetItemCheckState(selectAllIndex) != CheckState.Unchecked)
            {
                count--;
            }

            if (e.NewValue != e.CurrentValue)
            {
                if (e.NewValue == CheckState.Checked)
                {
                    count++;
                }
                else
                {
                    count--;
                }
            }

            if (count == 0)
            {
                checkedList.SetItemState(selectAllIndex, CheckState.Unchecked);
            }
            else if (count == checkedList.Items.Count - 1)
            {
                checkedList.SetItemState(selectAllIndex, CheckState.Checked);
            }
            else
            {
                checkedList.SetItemState(selectAllIndex, CheckState.Indeterminate);
            }
        }