Как убрать галочку в checklistbox?

У меня есть некоторые элементы в CheckedListBox, я хочу 9X_windows-form отключить CheckBox первого элемента в нем.
т.е. я 9X_c#-language хочу отключить первый элемент в CheckedListBox, потому 9X_checkboxlist что хочу визуально сообщить пользователю, что 9X_csharp этот параметр недоступен.

23
0
8
Общее количество ответов: 8

Ответ #1

Ответ на вопрос: Как убрать галочку в checklistbox?

Комбинация двух приведенных выше частичных 9X_visual-c# ответов отлично сработала. Добавьте свои 9X_winforms элементы в список с помощью:

myCheckedListBox.Items.Add(myItem, myState);

Где myState 9X_c# - это CheckState.Indeterminate для элементов, которые 9X_windows.forms следует отключить. Затем добавьте обработчик 9X_winform событий, чтобы эти элементы не менялись:

myCheckedListBox.ItemCheck += (s, e) => { if (e.CurrentValue == CheckState.Indeterminate) e.NewValue = CheckState.Indeterminate; };

Это 9X_.cs-file не позволяет вам использовать «Неопределенный» в 9X_winform этом списке для его обычных целей, но это 9X_visual-c# выглядит очень похоже на то, что можно было 9X_c#-language бы ожидать от отключенного элемента, и обеспечивает 9X_winforms правильное поведение!

20
0

Ответ #2

Ответ на вопрос: Как убрать галочку в checklistbox?

Хотя это сообщение довольно старое, последний 9X_c-sharp добавленный ответ был отправлен в апреле 9X_.cs-file этого года,
и я надеюсь, что это кому-то 9X_csharp поможет.
Я искал нечто подобное: поле с 9X_window-forms отмеченным списком, которое ведет себя как множество 9X_window-form установщиков, которые предлагают список 9X_window-form вариантов, в которых требуются некоторые 9X_.cs-file функции, и таким образом оба отмечены и отключены.
Благодаря 9X_window-forms этому сообщению (Can I use a DrawItem event handler with a CheckedListBox?) Мне удалось это сделать, создав 9X_c#.net подкласс элемента управления CheckedListBox.
Как указано 9X_.cs-file в OP в связанной публикации, в элементе 9X_.cs-file управления CheckedListBox событие OnDrawItem никогда не запускается, поэтому 9X_c# подклассы необходимы.
Это очень просто, но 9X_csharp работает. Вот как это выглядит (CheckBox выше для 9X_c# сравнения):

9X_Как убрать галочку в checklistbox?_visual-c#

ПРИМЕЧАНИЕ: отключенный элемент действительно отключен: нажатие 9X_window-form на него не имеет никакого эффекта (насколько 9X_c# я могу судить).

А это код:

public class CheckedListBoxDisabledItems : CheckedListBox {
    private List _checkedAndDisabledItems = new List();
    private List _checkedAndDisabledIndexes = new List();

    public void CheckAndDisable(string item) {
        _checkedAndDisabledItems.Add(item);
        this.Refresh();
    }

    public void CheckAndDisable(int index) {
        _checkedAndDisabledIndexes.Add(index);
        this.Refresh();
    }

    protected override void OnDrawItem(DrawItemEventArgs e) {
        string s = Items[e.Index].ToString();

        if (_checkedAndDisabledItems.Contains(s) || _checkedAndDisabledIndexes.Contains(e.Index)) {
            System.Windows.Forms.VisualStyles.CheckBoxState state = System.Windows.Forms.VisualStyles.CheckBoxState.CheckedDisabled;
            Size glyphSize = CheckBoxRenderer.GetGlyphSize(e.Graphics, state);
            CheckBoxRenderer.DrawCheckBox(
                e.Graphics,
                new Point(e.Bounds.X + 1, e.Bounds.Y + 1), // add one pixel to align the check gliph properly
                new Rectangle(
                    new Point(e.Bounds.X + glyphSize.Width + 3, e.Bounds.Y), // add three pixels to align text properly
                    new Size(e.Bounds.Width - glyphSize.Width, e.Bounds.Height)),
                s,
                this.Font,
                TextFormatFlags.Left, // text is centered by default
                false,
                state); 
        }
        else {
            base.OnDrawItem(e);
        }
    }

    public void ClearDisabledItems() {
        _checkedAndDisabledIndexes.Clear();
        _checkedAndDisabledItems.Clear();
        this.Refresh();
    }
}

Используйте это 9X_c-sharp так:

checkedListBox.Items.Add("Larry");
checkedListBox.Items.Add("Curly");
checkedListBox.Items.Add("Moe");

// these lines are equivalent
checkedListBox.CheckAndDisable("Larry");
checkedListBox.CheckAndDisable(0);

Надеюсь, это кому-то поможет.

19
0

Ответ #3

Ответ на вопрос: Как убрать галочку в checklistbox?

Отключение элементов - не лучшая идея, у 9X_visual-c# пользователя не будет хорошей обратной связи, и 9X_c#.net установка флажка не будет иметь никакого 9X_c-sharp эффекта. Вы не можете использовать пользовательский 9X_windows-forms рисунок, чтобы сделать это очевидным. Лучше 9X_c#.net всего просто опустить этот элемент.

Однако 9X_windows-forms вы можете легко победить пользователя с 9X_winform помощью события ItemCheck:

    private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e) {
        if (e.Index == 0) e.NewValue = e.CurrentValue;
    }

12
3

  • thnx, но я хочу визуально сообщить пользователю, что э ...

Ответ #4

Ответ на вопрос: Как убрать галочку в checklistbox?

Чтобы отключить какой-либо конкретный элемент, используйте 9X_winforms следующее:

checkedListBox1.SetItemCheckState(0, CheckState.Indeterminate);

SetItemCheckState принимает индекс элемента и CheckState Enum Неопределенный используется 9X_.cs-file для отображения тени

11
1

  • Это показывает серый цвет, но не мешает пользователю проверять элемент (я думаю, это можно сделать, реализовав прослушивате ...

Ответ #5

Ответ на вопрос: Как убрать галочку в checklistbox?

Я знаю, что прошло какое-то время, но я 9X_winforms нашел это в своем поиске списка и подумал, что 9X_windows-form добавлю его в обсуждение.

Если у вас есть 9X_windows-form список и вы хотите отключить все флажки, чтобы 9X_windows-forms их нельзя было щелкнуть, но не отключите 9X_visual-c# элемент управления, чтобы пользователь мог 9X_windows-form прокручивать и т. д., вы можете сделать 9X_window-forms это:

listbox.SelectionMode = SelectionMode.None

5
0

Ответ #6

Ответ на вопрос: Как убрать галочку в checklistbox?

CheckedListBox не будет работать таким образом. CheckedListBox.Items - это 9X_visual-c# набор строк, поэтому их нельзя "отключить" как 9X_checkboxlist таковые.

Вот несколько обсуждений возможных 9X_winform решений, которые могут вам помочь: here и here.

3
0

Ответ #7

Ответ на вопрос: Как убрать галочку в checklistbox?

У меня работает:

checkedListBox1.SelectionMode = SelectionMode.None;

Это означает, что нельзя 9X_winform выбрать ни один элемент

Нет: нельзя выбрать 9X_visual-c# элементы.

Дополнительную информацию можно 9X_winform найти здесь: SelectionMode Enumeration.

2
0

Ответ #8

Ответ на вопрос: Как убрать галочку в checklistbox?

Решение - использовать событие ItemChecking:

_myCheckedListBox.ItemChecking += (s, e) => e.Cancel = true;

Это отменит 9X_windows-forms все проверки для каждого элемента, но вы 9X_windows.forms всегда можете найти более совершенное решение, но 9X_.cs-file протестировать текущий .SelectedItem

1
0