|
Модераторы: gambit, Partizan |
|
skhilkov |
|
|||
Опытный Профиль Группа: Участник Сообщений: 371 Регистрация: 11.4.2006 Где: TOMSK Репутация: нет Всего: 7 |
Привет )
Сегодня наткнулся на интересную вещь: есть у меня CheckedListbox, мне нужно проверять событие клика мыши на нем: попал или нет. Использую чекЛистБокс.ClientRectangle.Contains(e.Location) Интересное начинается если у литбокса появляется скроллбар. ClientRectangle как я прочитал, не захватывает границы, скроллбары и тому подобное, как выход, конечно, можно попробовать добавлять ширину скроллбара к клиентской области, НО таких чеклистбоксов у меня много, и я не могу знать где есть скролл а где его нет, по крайней мере я не нашел как это определить. Может кто знает бубны на этот случай? )) -------------------- Кто понял жизнь, тот не спешит. |
|||
|
||||
skhilkov |
|
|||
Опытный Профиль Группа: Участник Сообщений: 371 Регистрация: 11.4.2006 Где: TOMSK Репутация: нет Всего: 7 |
Самое обидное - это то, что у чекЛистбокса есть свойство HorizontalScrollBar,
но нет свойства VerticalScrollBar -------------------- Кто понял жизнь, тот не спешит. |
|||
|
||||
mr.DUDA |
|
|||
3D-маньяк Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 24 Всего: 232 |
(Кулхацкер моде он)
Пишем свой наследник от CheckedListBox:
В коде .Designer.cs формы заменяем CheckedListBox на MyCheckedListBox. Подписываемся на событие MouseClick чекедлистбокса. Профит! (кулхацкер моде офф) -------------------- |
|||
|
||||
skhilkov |
|
|||
Опытный Профиль Группа: Участник Сообщений: 371 Регистрация: 11.4.2006 Где: TOMSK Репутация: нет Всего: 7 |
не понял как это должно работать, но все равно попытался - не работает )
Хотя, может я чего-то не догнал.. Мне надо чтобы в обработчике нажатия мыши работал этот код:
или работал любой другой код, который бы определял: попал я мышкой в чекедлистбокс(включая скролл) или нет.. -------------------- Кто понял жизнь, тот не спешит. |
|||
|
||||
mr.DUDA |
|
|||
3D-маньяк Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 24 Всего: 232 |
skhilkov, если пришло в обработчик MouseClick, то условие ClientRectangle.Contains(e.Location) по-любому уже выполнено, зачем его ещё раз отдельно проверять?
Код:
Проект в аттаче. Это сообщение отредактировал(а) mr.DUDA - 27.7.2011, 18:37 Присоединённый файл ( Кол-во скачиваний: 2 ) WindowsFormsApplication1.zip 10,24 Kb -------------------- |
|||
|
||||
skhilkov |
|
|||
Опытный Профиль Группа: Участник Сообщений: 371 Регистрация: 11.4.2006 Где: TOMSK Репутация: нет Всего: 7 |
mr.DUDA,
В том-то и дело, что не приходит. Дело в том, что обработчик мыши срабатывает в любом случае, потому как у чекЛистбокса установлено Capture=true, поэтому и проверяю попал или не попал, если не попал - чекЛистбокс прячу. И вот тут(!) происходит этот прикол - когда я хочу прокрутить чекЛистбокс, то при клике на его скролбар, он пропадает, потому как не выполняется
Вот я и хочу понять как мне эту ситуевину разрулить. -------------------- Кто понял жизнь, тот не спешит. |
|||
|
||||
skhilkov |
|
|||
Опытный Профиль Группа: Участник Сообщений: 371 Регистрация: 11.4.2006 Где: TOMSK Репутация: нет Всего: 7 |
Попробовал примерно высчитать есть ли в данный момент скролл у чекедлистбокса исходя из количества айтемов, вроде получилось...
Теперь осталась одна проблема - при клике на полосу прокрутки лист не закрывается, но и полоса не прокручивается, так как у листа Capture все время true... Это еще раз доказывает, что скроллбар существует как-то отдельно от самого компонента... -------------------- Кто понял жизнь, тот не спешит. |
|||
|
||||
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Разработка Windows Forms | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |