Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Опция выбора в CheckedListBox 
V
    Опции темы
CYBERDREAM
Дата 16.1.2007, 02:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I think, there4 I am
***


Профиль
Группа: Завсегдатай
Сообщений: 1096
Регистрация: 31.10.2006
Где: CyberLand

Репутация: 4
Всего: 28



Привет Народ!
Есть вопрос, хотя может и глупый, но ответа никак не могу, без вас не обойтись.
Хочу сделать так, чтобы можно было только одну галочку поставить, А по умолчанию можно хоть весь список выделить, что меня не устроивает. Думал SelectionMode виновен, но там стоит "One". Есть идеи? smile 


--------------------
Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно)
Telegram, skype: kuchuk.artiom
PM MAIL WWW   Вверх
ivashkanet
Дата 16.1.2007, 08:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 11
Всего: 149



Для одиночного выбора придуманы РадиоБаттоны (RadioButton).
Чем тебе они не нравятся?
PM MAIL WWW ICQ   Вверх
ivashkanet
Дата 16.1.2007, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 11
Всего: 149



Не заметил, что это CheckedListBox  smile 

Идея только влоб:
Наследоваться от CheckedListBox и перекрыть OnItemCheck метод.
В нем, прежде чем изменять чекбокс, убираем все отмеченные итемы.
Вот что я наклепал:
Код

public class SingleCheckedListBox : System.Windows.Forms.CheckedListBox
    {
        private bool _uncheckingMode = false;
        protected override void OnItemCheck(ItemCheckEventArgs ice)
        {
            if (!_uncheckingMode)
            {
                base.OnItemCheck(ice);

                UncheckAll();

                //if (ice.CurrentValue == CheckState.Checked)
                //    ice.NewValue = CheckState.Unchecked;
                //else
                //    ice.NewValue = CheckState.Checked;
            }
        }

        private void UncheckAll()
        {
            _uncheckingMode = true;
            foreach (int index in this.CheckedIndices)
            {
                this.SetItemCheckState(index, CheckState.Unchecked);
            }
            _uncheckingMode = false;
        }
    }


uncheckingMode (режим снятия "птичек") нужен для того, чтобы при снятии птички не вызывался метод OnItemCheck в котором опять вызывался UncheckAll и поехали по кругу smile
Закоментированный код не нужен, хотя, на первый взгляд, необходим.
PM MAIL WWW ICQ   Вверх
CYBERDREAM
Дата 16.1.2007, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I think, there4 I am
***


Профиль
Группа: Завсегдатай
Сообщений: 1096
Регистрация: 31.10.2006
Где: CyberLand

Репутация: 4
Всего: 28



Извиняюсь за посредственные знания, не сталкивался прежде. Как сделать наследование?

Это сообщение отредактировал(а) CYBERDREAM - 16.1.2007, 11:23


--------------------
Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно)
Telegram, skype: kuchuk.artiom
PM MAIL WWW   Вверх
Naum
Дата 16.1.2007, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

Репутация: 1
Всего: 15



Цитата(ivashkanet @  16.1.2007,  10:35 Найти цитируемый пост)
public class SingleCheckedListBox : System.Windows.Forms.CheckedListBox

Эта строчка и означает, что класс SingleCheckedListBox наследник CheckedListBox. А вообще надо бы подучить теорию.



--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
ivashkanet
Дата 16.1.2007, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 11
Всего: 149



CYBERDREAM, тебе нужно будет:
1) В меню (наверху) выбрать Project --> AddClass.
2) Откроется диалог, дашь етому классу имя SingleCheckedListBox
3) Откроется страница с кодом. Код:
Код

    class SingleCheckedListBox
    {
    }

Полностью заменишь на мой (1:1, кроме коментариев)
4) Скомпилируешь проект
5) В дизайнере форм на вкладке Toolbox появится подвкладка "<Твой проект> components" появится новый контрол, его можно ложить на форму

PM MAIL WWW ICQ   Вверх
CYBERDREAM
Дата 16.1.2007, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I think, there4 I am
***


Профиль
Группа: Завсегдатай
Сообщений: 1096
Регистрация: 31.10.2006
Где: CyberLand

Репутация: 4
Всего: 28



Все работает. Огромное спасибо. ivashkanet спасибо за полное изложение!  smile 


--------------------
Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно)
Telegram, skype: kuchuk.artiom
PM MAIL WWW   Вверх
ivashkanet
Дата 16.1.2007, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 11
Всего: 149



CYBERDREAM, всегд рад smile
Заходи еще smile
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0585 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.