Как убрать галочку в checklistbox?
У меня есть некоторые элементы в CheckedListBox
, я хочу 9X_windows-form отключить CheckBox
первого элемента в нем.
т.е. я 9X_c#-language хочу отключить первый элемент в CheckedListBox
, потому 9X_checkboxlist что хочу визуально сообщить пользователю, что 9X_csharp этот параметр недоступен.
Ответ #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 правильное поведение!
Ответ #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_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);
Надеюсь, это кому-то поможет.
Ответ #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;
}
- thnx, но я хочу визуально сообщить пользователю, что э ...
Ответ #4
Ответ на вопрос: Как убрать галочку в checklistbox?
Чтобы отключить какой-либо конкретный элемент, используйте 9X_winforms следующее:
checkedListBox1.SetItemCheckState(0, CheckState.Indeterminate);
SetItemCheckState
принимает индекс элемента и CheckState
Enum
Неопределенный используется 9X_.cs-file для отображения тени
- Это показывает серый цвет, но не мешает пользователю проверять элемент (я думаю, это можно сделать, реализовав прослушивате ...
Ответ #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
Ответ #6
Ответ на вопрос: Как убрать галочку в checklistbox?
CheckedListBox не будет работать таким образом. CheckedListBox.Items - это 9X_visual-c# набор строк, поэтому их нельзя "отключить" как 9X_checkboxlist таковые.
Вот несколько обсуждений возможных 9X_winform решений, которые могут вам помочь: here и here.
Ответ #7
Ответ на вопрос: Как убрать галочку в checklistbox?
У меня работает:
checkedListBox1.SelectionMode = SelectionMode.None;
Это означает, что нельзя 9X_winform выбрать ни один элемент
Нет: нельзя выбрать 9X_visual-c# элементы.
Дополнительную информацию можно 9X_winform найти здесь: SelectionMode Enumeration.
Ответ #8
Ответ на вопрос: Как убрать галочку в checklistbox?
Решение - использовать событие ItemChecking
:
_myCheckedListBox.ItemChecking += (s, e) => e.Cancel = true;
Это отменит 9X_windows-forms все проверки для каждого элемента, но вы 9X_windows.forms всегда можете найти более совершенное решение, но 9X_.cs-file протестировать текущий .SelectedItem
-
5
-
8
-
5
-
4
-
2
-
3
-
2
-
3
-
2
-
10
-
8
-
10
-
3
-
8
-
9
-
8
-
6
-
12
-
6
-
11
-
6
-
6
-
3
-
13
-
7
-
8
-
5
-
20
-
6
-
13
-
6
-
13
-
4
-
7
-
6
-
7
-
15
-
4
-
2
-
4
-
3
-
6
-
2
-
4
-
7
-
8
-
2
-
8
-
6
-
4