Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > Button работающий как CheckBox


Автор: Экскалупатор 6.4.2011, 13:38
всем привет. есть такая проблема, надо сделать кнопку работающую как CheckBox, т.е. при нажатии кнопка должна оставаться нажатой, если нажать еще раз то должна "отжиматься". использовать CheckBox в стиле Button нельзя, нужна именно кнопка. как это лучше сделать?

Автор: -Mikle- 6.4.2011, 13:54
Цитата(Экскалупатор @  6.4.2011,  16:38 Найти цитируемый пост)
использовать CheckBox в стиле Button нельзя

Уточняю просто, ты про WinForm?

Если да, то кроме как сделать наследника, добавить нужные мемберы и перегрузить рисование, пока ничего в голову не приходит. На сколько помню, в фреймворке есть готовые методы, которые рисуют кнопку в любом состоянии. То есть тут просто понадобится переделать в каком состоянии и когда должно нарисоваться, а не рисовать всю кнопку заново.

Автор: Экскалупатор 6.4.2011, 14:13
Цитата(-Mikle- @  6.4.2011,  12:54 Найти цитируемый пост)
ты про WinForm?

да, в нем.

на счет перерисовать это понятно, тоже эта мысль сразу в голову пришла, но может есть вариант как то выкрутиться по другому...

Автор: Rohoss 6.4.2011, 14:52
А если попробовать захостить WPF контрол?

Автор: Экскалупатор 6.4.2011, 14:54
Rohoss, .net 2.0 WinForm никаких WPF

Автор: jonie 6.4.2011, 15:18
Штука зовется PushButton. Пример: http://www.codeproject.com/KB/buttons/bitmapbutton.aspx
ну и вообще гугл

Автор: Экскалупатор 6.4.2011, 16:21
jonie, круто, я не знал. а гугл что то отказался со мной сотрудничать... подскажите еще как задать стиль чему то, а то у меня ругается во время выполнениея:
Visual Styles-related operation resulted in an error because no visual style is currently active.

типа нет выбранного стиля, а куда где его выбрать что то не могу дорубить.

Автор: diadiavova 6.4.2011, 19:23
Цитата(Экскалупатор @  6.4.2011,  14:38 Найти цитируемый пост)
использовать CheckBox в стиле Button нельзя

А можно узнать почему? Интересно просто.

Автор: Экскалупатор 6.4.2011, 23:57
Цитата(diadiavova @  6.4.2011,  18:23 Найти цитируемый пост)

А можно узнать почему? Интересно просто. 

в спецификации написано кнопка, руководитель проекта требует что бы была кнопка.

Автор: diadiavova 7.4.2011, 06:50
Цитата(Экскалупатор @  7.4.2011,  00:57 Найти цитируемый пост)
в спецификации написано кнопка, руководитель проекта требует что бы была кнопка. 

А чекбокс - это что? smile Он наследует от ButtonBase - базовый класс для кнопок.

Автор: Экскалупатор 7.4.2011, 08:37
diadiavova, ))) ага, я тоже так сказал, но должна быть кнопка. может кто составлял спецификацию не знал что чек бокс может быть в виде кнопки, но сейчас это уже не известно. хотя после того как я показал что таки можно чекбокс превратить в кнопку и добавил что так логичнее(потому как у него уже есть требуемые свойства, типа cheked и пр) со мной вроде согласились...

Автор: diadiavova 7.4.2011, 08:45
Цитата(Экскалупатор @  7.4.2011,  09:37 Найти цитируемый пост)
 может кто составлял спецификацию не знал что чек бокс может быть в виде кнопки

А как в спецификации это написано? Если там просто написано кнопка, то чекбокс вполне подходит под это определение, вот если бы там было написано, что нужен экземпляр класса Button или его наследника - тогда да.

Автор: Экскалупатор 7.4.2011, 08:51
Цитата(diadiavova @  7.4.2011,  07:45 Найти цитируемый пост)
что нужен экземпляр класса Button или его наследника - тогда да. 

хм. ну в таком случае я бы даже не предлагал другие варианты
написано "кнопка", но тут еще есть руководитель проекта, для меня решает он, если он скажет что чек бокс покатит то сделаю чекбокс. вообще несомненно странное требование.

Автор: diadiavova 7.4.2011, 08:56
Цитата(Экскалупатор @  7.4.2011,  09:51 Найти цитируемый пост)
вообще несомненно странное требование. 

Даже более чем: требовать ручной реализации функциональности стандартного контрола ... smile 

Автор: Fitc 7.4.2011, 08:59
Попробуйте бесплатные компоненты ComponentFactory там должна быть такая кнопка

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)