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

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


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

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

12   голосов , оценка 4.083 из 5
Похожие ответы