C # Check All из CheckedListBox без отображения записи «Check All» - PullRequest
0 голосов
/ 28 декабря 2011

У меня есть небольшая программа, которая имеет несколько проверенных списков в VS2010.Я хотел позволить пользователю выбрать все в одном из списков и придумал эту циклическую структуру ...

private void CheckedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
    {
        if (e.NewValue == CheckState.Checked)
        {
            Applications.Add(CheckedListBox1.Items[e.Index].ToString());
        }
        else if (e.NewValue == CheckState.Unchecked)
        {
            Applications.Remove(CheckedListBox1.Items[e.Index].ToString());
        } 
    }

private void CheckedListBox1_SelectedIndexChanged(object sender, EventArgs e)
    {

        if (CheckedListBox1.SelectedIndex == 0)
        {
            for (int i = 1; i < CheckedListBox1.Items.Count; i++)
            {
                CheckedListBox1.SetItemChecked(i, CheckedListBox1.GetItemChecked(0));
            }
        }
        else
        {
            if (!CheckedListBox1.GetItemChecked(CheckedListBox1.SelectedIndex))
            {
                CheckedListBox1.SetItemChecked(0, false);
            }
        }

    }

Проблема в том, что это также ставит флажок «Выбрать все» в вывод.Есть ли способ, которым я могу настроить цикл так, чтобы он не включал первый флажок (который является проверкой «Выбрать все»), или я должен пойти по этому поводу другим путем?

1 Ответ

1 голос
/ 28 декабря 2011

Довольно неясно, что может означать «в вывод».Использование события SelectedIndexChanged не очень подходит, событие ItemCheck сигнализирует о проверке элемента.Попробуйте вместо этого:

    private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e) {
        if (e.Index == 0) {
            for (int item = 1; item < checkedListBox1.Items.Count; item++) {
                checkedListBox1.SetItemChecked(item, true);
            }
            e.NewValue = CheckState.Unchecked;  // Prevent "Check All" from getting checked
        }
    }

Если вы все равно хотите использовать SelectedIndexChanged, сохраняйте этот обработчик событий, чтобы предотвратить проверку элемента.

...