1 / 1 / 0
Регистрация: 02.05.2017
Сообщений: 12
|
||||||
1 | ||||||
CheckBox в DataGridView21.07.2017, 09:02. Показов 5472. Ответов 9
Метки нет Все метки)
(
Доброго времени суток. Делаю программу для подсчета голосов.
Что имеем: Есть некая таблица datagridview1, которая состоит из, к примеру, 44 строк. В ней хранится информация о собственниках (в том числе ФИО и номер квартиры). На этой же форме есть таблица golos (которая тоже datagridview). В этой таблице пользователем вручную будет отмечено, кто и как проголосовал. Соответственно, эта таблица состоит из n столбцов, где n - количество рассмотренных на голосовании вопросов (вводится пользователем) и m строк, где m = кол-во строк в datagridview1 * 3 (по три варианта голосования для каждого собственника: за, против и воздержался). Задача: Все ячейки в таблице должны быть типа CheckBox. Казалось бы, все просто, но таблица создается полностью программно, а возможность менять программно тип ячейки я найти не могу. Максимум, что у меня получилось, на скриншоте. Дальше моск и гугл отказываются работать =( В идеале, конечно, красиво было бы сделать еще одну колонку в начале, которая будет содержать слова ЗА, ПРОТИВ, ВОЗДЕРЖАЛСЯ, и так циклично для каждого собственника, однако как это сделать, я тоже пока не особо понимаю. Прошу вашей помощи, уважаемые знатоки.
0
|
|
21.07.2017, 09:02 | |
Ответы с готовыми решениями:
9
CheckBox в DataGridView отслеживание помеченых строк CheckBox в DataGridView DataGridView с CheckBox dataGridView + checkBox |
0 / 0 / 0
Регистрация: 19.07.2017
Сообщений: 5
|
|
21.07.2017, 09:50 | 2 |
извините,что не по теме, но близко.
Diamanda, как вы вывели наименования ФИО и порядковый номер в самый первый столбец ? пришлите кусочек кода пожалуйста. Он обычно пустой при создании датагрида
0
|
910 / 795 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
|
|
21.07.2017, 10:01 | 3 |
Diamanda, у меня для Вас два вида решения:
1) Добавляете перед вопросами ещё колонку с комбобоксом который и будет содержать Ваши за, против, воздержался и отталкиваетесь от этого уже 2) Пишите свою реализацию CheckBoxColumn чтобы она содержала не 1, а 3 чекбокса сразу с подписями
0
|
1 / 1 / 0
Регистрация: 02.05.2017
Сообщений: 12
|
||||||
21.07.2017, 10:13 [ТС] | 4 | |||||
red_biker,
SeIZVeIZ, с комбобоксом не получится, т.к. слишком много телодвижений придется пользователю совершать. Специально заказчик попросил именно такое оформление. А насчет второго... не знаю, как это сделать, если честно. Я множко нуб в программировании ![]()
1
|
910 / 795 / 329
Регистрация: 08.02.2014
Сообщений: 2,391
|
|
21.07.2017, 10:35 | 6 |
![]() Решение
Ну и сам проект оттуда
0
|
1 / 1 / 0
Регистрация: 02.05.2017
Сообщений: 12
|
|
21.07.2017, 15:04 [ТС] | 7 |
SeIZVeIZ, спасибо, буду в понедельник разбираться =)
блин, радиобаттоны... совсем из головы они у меня вылетели, действительно, намного логичнее их использовать
0
|
8936 / 4848 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
|
|||||||||||||||||||||||||||||||
22.07.2017, 01:27 | 8 | ||||||||||||||||||||||||||||||
Ячейка твоя должна содержать одно из слов «Да», «Нет» или «Воздержался». Это достаточно наглядно.
Начать с того, что нужен тип для хранения этих значений. Проще всего enum. Значения, отображаемые в dgv, задаём атрибутом DescriptionAttribute: VotingResultEnum.cs
Чтобы эти значения правильно отображались в dgv, используем конвертер, заданный через атрибут TypeConverterAttribute: VotingResultEnumConverter
Но для редактирования значения ячейки нужно использовать свой контрол с тремя вариантами выбора: VoteSelector.cs
Каждая кнопка — это RadioButton с Appearance = Button
Чтобы редактировать значение с помощью этого контрола, нужно реализовать интерфейс IDataGridViewEditingControl :VotingEditCell.cs
Затем необходима ячейка DGV, которой назначим редактором класс VotingEditCell . Поскольку отображаться будет просто текст, то наследуемся от DataGridViewTextBoxCell :VotingCell
И в конце концов, нужен столбец DGV, в который поместим VotingCell :VotingColumn
Теперь в dgv можно добавлять наш столбец хоть программно, хоть через редактор столбцов и задавать значения. В рантайме значение редактируется как обычно: двойной клик или F2 Во вложении два проекта: библиотека с контролами и приложение WinForms для демонстрации
2
|
1 / 1 / 0
Регистрация: 02.05.2017
Сообщений: 12
|
|
24.07.2017, 05:02 [ТС] | 9 |
SeIZVeIZ, больше спасибо! Разобраться мозгов мне не хватило, а вот подключить уже готовый класс и создать на его основе свое - всегда пожалуйста, нас этому в технаре научили =))
0
|
1 / 1 / 0
Регистрация: 02.05.2017
Сообщений: 12
|
|
27.07.2017, 05:41 [ТС] | 10 |
Проблема этого класса в том, что при попытке получить значение ячейки через Value он возвращает null, т.к. после выбора одного из вариантов ответа редактирование ячейки не завершается. Поэтому получать значение ячейки нужно через EditedFormattedValue.
Ну, может, кому-то понадобится в будущем.
0
|
27.07.2017, 05:41 | |
27.07.2017, 05:41 | |
Помогаю со студенческими работами здесь
10
Работа с checkbox в datagridview
checkbox в заголовке datagridview DataGridView и CheckBox в ее ячейках DataGridView: CheckBox столбец Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |