| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Разработка Windows Forms > про CheckedListBox |
| Автор: lioness 26.9.2006, 16:11 |
| А как отключить "контрольные квадратики", чтобы пользователь пальцАми не мог переключать? Для CheckBox есть (если не ошибаюсь) AutoCheck поставить в false и ставить галочки уже нет никакой возможности. А для CheckedListBox не нашла такого. Вроде бы вычитала, что поставить свойство ThreeDCheckBoxes в true, но что-то не получается. Как убрать возможность для пользователя ставить-стереть галочку у всего списка... Ну или у каждого элемента списка в CheckedListBox-е? Мне нужно, чтобы на некотором этапе только я могла контролировать State элемента. |
| Автор: mr.DUDA 26.9.2006, 16:58 |
| Свойство CheckOnClick не пойдёт ? Добавлено @ 17:00 О, нашёл событие: ItemCheck. Подписываемся, и в обработчике всегда переносим значение CurrentValue в NewValue (если конечно состояние не программно меняется - для этого можно bool-переменную типа "bool _allowChangeState" завести). |
| Автор: lioness 26.9.2006, 17:05 |
| Неее! Я тоже сразу на него подумала. Но он в "true" позволяет ставить-убирать галочки ОДНИМ щелчком. А так - два раза кликнуть. Событие? Может для каждого айтим свойство выставить? Я думала типа -> .....ItemCheck.AutoCheck= false И мне надо не для выбранных элементов списка, а вообще ручное щелканье в этом боксе на некотором этапе отменить. |
| Автор: lioness 26.9.2006, 17:54 |
| Ой! А цвет текста только в ОДНОЙ строке я не могу поменять? Как же так: я ставлю галочку и не могу цветом текста еще дополнительно обозначить выбор. Мне было именно так надо... |
| Автор: lioness 27.9.2006, 11:21 |
| Неа ! Без Enabled весь список просто мертвый. А мне нужно точно такое же, как в простом одиночном CheckBox, отключает возможность действовать на квадратик "AutoCheck = false". Я была бы даже согласная не на весь CheckedListBox сразу, а на каждый item по отдельности. Мне нужно три состояния у каждого элемента, как было и есть у одиночного ...Checked = CheckState. ( Checked, Indeterminate, Unchecked) . Ничегошеньки в лист-боксе нет похожего. Потом такая проблема с цветом. Я собралась каждую еще и цветом выделять: зеленый, красный или "глухой" выключенный серый. А тут с каждым item-ом, кроме как собрать коллекцию selected или нет, вощщщее ничего нельзя сделать. И цвет поменять можно только на целый блок целиком. Что за беда ... Добавлено Так, могу управлять этими тремя состояниями в том прерыве, как mr.DUDA сказал, и не допустить посторонних пальцев к кликанью по квадратикам. А вот что с цветом делать? Очень надо... Может, мне графический текст аккуратненько "наклеить" на нужный мне элемент в checkedListBox? Что-то там было насчет ItemHeight... Может, там и координаты левого верхнего угла найдутся и ширина? А? Или мне отказаться от checkedListBox-а? |
| Автор: lioness 27.9.2006, 13:24 |
| http://www.thescarms.com/dotNet/CustomListBox.asp О чё нашла Но опять же никаких следов DrawItem нет в CheckedListBox |
| Автор: mr.DUDA 27.9.2006, 18:43 |
| Можно обработать событие SelectedIndexChanged и убирать выделение принудительно. |
| Автор: KAFLAN 28.9.2006, 02:43 | ||
Когда сталкнулся с такой же проблемой, понял что найболее быстрым в реализации и примлемым (для меня) вариантом является этот: 1. Кидаем FlowLayoutPanel устанавливаем в нём цвет фона белый, 3d границы. (эмулируя таким образом CheckListBox) 2. Динамически генерим CheckBox`ы и кидаем их в FlowLayoutPanel. Таким образом имеем возможность пользоваться тремя привычными для нас состояниями чекбоксов и менять цвет каждого отдельного checkBox`а ;) |
| Автор: lioness 28.9.2006, 10:56 |
| Вот о чем мечталось: http://www.java2s.com/Code/CSharp/GUI-Windows-Form/ListBoxfontandimage.htm Т.е. я так понимаю, что графической кррррасоты в CheckedListBox принципиально не предусмотрено. Делаем иконку вместо боксика со всеми состояниями и рисуем перед текстом с нужным цветом. Ухожу от CheckedListBox к ListBox |