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;
}
}
}
}