CheckBox в DataGridView - C#

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток. Делаю программу для подсчета голосов. Что имеем: Есть некая таблица datagridview1, которая состоит из, к примеру, 44 строк. В ней хранится информация о собственниках (в том числе ФИО и номер квартиры). На этой же форме есть таблица golos (которая тоже datagridview). В этой таблице пользователем вручную будет отмечено, кто и как проголосовал. Соответственно, эта таблица состоит из n столбцов, где n - количество рассмотренных на голосовании вопросов (вводится пользователем) и m строк, где m = кол-во строк в datagridview1 * 3 (по три варианта голосования для каждого собственника: за, против и воздержался). Задача: Все ячейки в таблице должны быть типа CheckBox. Казалось бы, все просто, но таблица создается полностью программно, а возможность менять программно тип ячейки я найти не могу. Максимум, что у меня получилось, на скриншоте. Дальше моск и гугл отказываются работать =( В идеале, конечно, красиво было бы сделать еще одну колонку в начале, которая будет содержать слова ЗА, ПРОТИВ, ВОЗДЕРЖАЛСЯ, и так циклично для каждого собственника, однако как это сделать, я тоже пока не особо понимаю. Прошу вашей помощи, уважаемые знатоки.
Листинг программы
  1. golos.DefaultCellStyle.WrapMode = DataGridViewTriState.True;
  2. int cc= Convert.ToInt32(textBox2.Text); //кол-во вопросов
  3. for (int i=0; i<cc; i++)
  4. {
  5. DataGridViewCheckBoxColumn col = new DataGridViewCheckBoxColumn();
  6. col.HeaderText = "Вопрос " + (i+1);
  7. golos.Columns.Add(col);
  8. }
  9. golos.RowHeadersWidth = 200;
  10. golos.RowCount = dataGridView1.RowCount * 3;
  11.  
  12. int k = 0;
  13. for (int i = 0; i < golos.Rows.Count-1; i+=3)
  14. {
  15. golos.Rows[i].HeaderCell.Value= dataGridView1.Rows[k].Cells[2].Value.ToString()+"\n"
  16. + dataGridView1.Rows[k].Cells[1].Value.ToString(); //заголовок-номер квартиры и ФИО
  17. k++;
  18. }
  19. golos.Visible = true;
  20. }

Решение задачи: «CheckBox в DataGridView»

textual
Листинг программы
  1. namespace System.Windows.Forms
  2. {
  3.     /// <summary>
  4.     /// Столбец с ячейкой результата голосования
  5.     /// </summary>
  6.     public class VotingColumn : DataGridViewTextBoxColumn
  7.     {
  8.         private VotingCell _cellTemplate;
  9.  
  10.         public override DataGridViewCell CellTemplate
  11.         {
  12.             get
  13.             {
  14.                 if (_cellTemplate == null)
  15.                     _cellTemplate = new VotingCell();
  16.                 return _cellTemplate;
  17.             }
  18.             set
  19.             {
  20.                 _cellTemplate = (VotingCell)value;
  21.             }
  22.         }
  23.     }
  24. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.083 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы