Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/29: Рейтинг темы: голосов - 29, средняя оценка - 4.72
1 / 1 / 2
Регистрация: 02.10.2013
Сообщений: 76

Checkedlistbox - запретить вручную ставить/снимать флажок

05.06.2015, 10:04. Показов 5742. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, помогите пожалуйста решить проблему с checkedlistbox
необходимо чтобы доступ к check item был только программно - т.е. по клику мышки (одинарный, двойной) не изменялось состояние чекбокса в checkedlistbox.
так как реализовал работает только при одинарном клике, но при двойном состояние меняется
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
private void checkedListBox1_MouseDown(object sender, MouseEventArgs e)// в момент нажатия клавишы мы отлавливаем состояние чекбокса
{
    int n = checkedListBox1.IndexFromPoint(e.X, e.Y);
    textBox2.AppendText(n + "\r\n");
    yyyy = checkedListBox1.GetItemCheckState(n).ToString();// 
    textBox2.AppendText(yyyy + "\r\n");            
}
 
private void checkedListBox1_MouseUp(object sender, MouseEventArgs e)// и когда кнопку отпускаем то возвращаем то состояние которое отловили
{
    if (yyyy !=null)
    {
        int n = checkedListBox1.IndexFromPoint(e.X, e.Y);
        if (yyyy.Equals("Checked"))
        {
            checkedListBox1.SetItemCheckState(n, CheckState.Checked);
        }
        else
        {
            checkedListBox1.SetItemCheckState(n, CheckState.Unchecked);
        }
    }
}
заранее благодарен!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.06.2015, 10:04
Ответы с готовыми решениями:

CheckedListBox - как установить-снять флажок?
Доброго времени суток! Тут такое дело... Потребовалось программно установить-снять флажки в списке коллекции CheckedListBox. Перерыл...

Снимать класс у одних элементов и ставить его другим
Как сделать так(чисто на js без jquery и тп), чтобы класс добавлялся при клике на <li> item ну или ссылке тут не суть, а при клике на...

Можно ли программно ставить и снимать защиту с VBA проекта в Excel, Access?
Помогите, пожалуйста, можно ли программно ставить и снимать защиту с VBA проекта в Excel, Access???

2
0 / 0 / 1
Регистрация: 13.01.2016
Сообщений: 8
13.01.2016, 22:28
Спасибо, благодаря тебе нашел функцию, чтобы реализовать устновку флажка одинарным щелчком мыши.
Получается так, что одним кликом происходит выделение, а вторым установка флажка. Либо двойным кликом (почти одно и тоже). Но если выделение будет происходить при движении курсора, то галоку ставить можно одним кликом.

C#
1
2
3
4
private void checkedListBox1_MouseMove(object sender, MouseEventArgs e)
        {            
            checkedListBox1.SetSelected(checkedListBox1.IndexFromPoint(e.X, e.Y),true);
        }
Добавлено через 6 минут
Тебе эта функция тоже могла пригодиться, если была бы своевременно написана
т.е. нужно в событие одинарного клика прописать реверсивную установку флажка и все (как у тебя в MouseUp). Должно сработать. А что мешает Enable false сделать?

Добавлено через 1 час 54 минуты
В связи с тем, что размер checkedListBox1 может быть больше, чем количество элементов в нем, поэтому нужно еще учесть пустое место над которым будет иногда "пролетать" курсор.

C#
1
2
3
4
5
        private void checkedListBox1_MouseMove(object sender, MouseEventArgs e)
        {
            if (checkedListBox1.IndexFromPoint(e.X, e.Y)!=-1)
            checkedListBox1.SetSelected(checkedListBox1.IndexFromPoint(e.X, e.Y),true);
        }
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
13.01.2016, 23:12
sanmar1no,
Для установки чека одним щелчком просто поставьте для CheckedListBox свойство CheckOnClick = true.

Добавлено через 34 минуты
Не обратил внимания на дату создания темы. Но вдруг кому пригодится, чтобы доступ к check item был только программно:
Подключаем обработчик к событию ItemCheck:
C#
1
2
3
4
private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
{
    e.NewValue = e.CurrentValue;
}
Естественно, теперь изменить состояние чекбокса невозможно даже программно. Поэтому при необходимости программного изменения пользуемся методом SetCheckState:
C#
1
2
3
4
5
6
public void SetCheckState(int itemIndex, CheckState newState)
{
    checkedListBox1.ItemCheck -= checkedListBox1_ItemCheck; // отключаем обработчик
    checkedListBox1.SetItemCheckState(itemIndex, newState); // меняем состояние
    checkedListBox1.ItemCheck += checkedListBox1_ItemCheck; // подключаем обработчик
}
Вызываем метод:
C#
1
2
3
SetCheckState(1, CheckState.Checked);
SetCheckState(3, CheckState.Indeterminate);
SetCheckState(4, CheckState.Unchecked);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.01.2016, 23:12
Помогаю со студенческими работами здесь

Как запретить\заблокировать приложению, запускаемому от админа, снимать скрин с экрана?
Уважаемые программисты, администраторы! Вопрос. Есть ли практическая или теоретическая возможность запретить\заблокировать приложению...

Как запретить множественный выбор в CheckedListBox
Здравствуйте! Подскажите пожалуйста почему при CheckedListBox1.SelectionMode = SelectionMode.One всё равно можно выделять несколько...

Запретить выбирать в CheckedListBox несколько пунктов
Как сделать возможность выбора только одного пункта. Причитал про свойство MultiSelect, но в списке компонента его нет.

Запретить отметку CheckBox/CheckComboBox вручную
Как сделать, чтобы CheckBox нельзя было отмечать вручную. А заодно то же самое для CheckListBox, пожалуйста подскажите

Как запретить вносить изменения в мемо вручную?
как запретить вносить изменения в мемо вручную??


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru