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; } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д