CheckBox в DataGridView - C#
Формулировка задачи:
Доброго времени суток. Делаю программу для подсчета голосов.
Что имеем:
Есть некая таблица datagridview1, которая состоит из, к примеру, 44 строк. В ней хранится информация о собственниках (в том числе ФИО и номер квартиры). На этой же форме есть таблица golos (которая тоже datagridview). В этой таблице пользователем вручную будет отмечено, кто и как проголосовал. Соответственно, эта таблица состоит из n столбцов, где n - количество рассмотренных на голосовании вопросов (вводится пользователем) и m строк, где m = кол-во строк в datagridview1 * 3 (по три варианта голосования для каждого собственника: за, против и воздержался).
Задача:
Все ячейки в таблице должны быть типа CheckBox. Казалось бы, все просто, но таблица создается полностью программно, а возможность менять программно тип ячейки я найти не могу. Максимум, что у меня получилось, на скриншоте. Дальше моск и гугл отказываются работать =(
В идеале, конечно, красиво было бы сделать еще одну колонку в начале, которая будет содержать слова ЗА, ПРОТИВ, ВОЗДЕРЖАЛСЯ, и так циклично для каждого собственника, однако как это сделать, я тоже пока не особо понимаю.
Прошу вашей помощи, уважаемые знатоки.
Листинг программы
- golos.DefaultCellStyle.WrapMode = DataGridViewTriState.True;
- int cc= Convert.ToInt32(textBox2.Text); //кол-во вопросов
- for (int i=0; i<cc; i++)
- {
- DataGridViewCheckBoxColumn col = new DataGridViewCheckBoxColumn();
- col.HeaderText = "Вопрос " + (i+1);
- golos.Columns.Add(col);
- }
- golos.RowHeadersWidth = 200;
- golos.RowCount = dataGridView1.RowCount * 3;
- int k = 0;
- for (int i = 0; i < golos.Rows.Count-1; i+=3)
- {
- golos.Rows[i].HeaderCell.Value= dataGridView1.Rows[k].Cells[2].Value.ToString()+"\n"
- + dataGridView1.Rows[k].Cells[1].Value.ToString(); //заголовок-номер квартиры и ФИО
- k++;
- }
- golos.Visible = true;
- }
Решение задачи: «CheckBox в DataGridView»
textual
Листинг программы
- namespace System.Windows.Forms
- {
- /// <summary>
- /// Столбец с ячейкой результата голосования
- /// </summary>
- public class VotingColumn : DataGridViewTextBoxColumn
- {
- private VotingCell _cellTemplate;
- public override DataGridViewCell CellTemplate
- {
- get
- {
- if (_cellTemplate == null)
- _cellTemplate = new VotingCell();
- return _cellTemplate;
- }
- set
- {
- _cellTemplate = (VotingCell)value;
- }
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д