Скрыть некоторую ячейку флажка datagridview

у меня естьdatagridview показывая рассрочку кредита. Я создалdatagridviewcheckbox Таким образом, я могу выбрать все взносы, которые я хочу оплатить.

Это экран сетки данных:

Моя проблема в том, что мне нужно отключить флажки платных вложений. В этом случае, когда «Restante» (что осталось заплатить)= 0.

Я прочитал несколько постов, где они использовали событие рисования, чтобы не показывать ячейку флажка, но мне не понравилось это решение. Я думал о том, чтобы скрыть ячейку с флажком, но я не знаю, возможно ли это сделать.

Вот что я попробовал:

foreach (DataGridViewRow row in dgv_Cuotas.Rows)
            {
                if (Convert.ToDecimal(dgv_Cuotas.Rows[row.Index].Cells[17].Value) == 0)
                {
                    dgv_Cuotas.Rows[row.Index].Cells[16].Visible = false;
                }
            }

Очевидно, что это не работает, я получаю сообщение об ошибке компилятора о том, что свойство доступно только для чтения.

Кто-нибудь знает, как установить флажок ячейки невидимым?

На всякий случай прикрепляюDataGridViewCheckboxColumn код создания:

DataGridViewCheckBoxColumn chbox = new DataGridViewCheckBoxColumn();
            {
                chbox.CellTemplate = new DataGridViewCheckBoxCell();
                chbox.HeaderText = "";
                chbox.Name = "Seleccionar";
                chbox.AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
                chbox.FlatStyle = FlatStyle.Standard;
            }
            dgv_Cuotas.Columns.Insert(16, chbox);
            dgv_Cuotas.Columns[16].DisplayIndex = 0;

РЕДАКТИРОВАТЬ:

Некоторые соображения:

Я использую событие щелчка содержимого ячейки для обработки флажков, поэтому чтение только не будет работать. Что я хочу, чтобы скрыть флажок:

private void dgv_Cuotas_CellContentClick(object sender, DataGridViewCellEventArgs e)
    {
        if (e.RowIndex == -1)
            return;
        if (dgv_Cuotas.Columns[e.ColumnIndex].Name == "Seleccionar")
        {
            DataGridViewRow row = dgv_Cuotas.Rows[e.RowIndex];
            DataGridViewCheckBoxCell cellSeleccion = row.Cells["Seleccionar"] as DataGridViewCheckBoxCell;
            int n_cuota = Convert.ToInt32(dgv_Cuotas[2, dgv_Cuotas.CurrentRow.Index].Value);
            Cuota cuota_seleccionada = new Cuota();
            cuota_seleccionada = Lista_cuotas.Where(x => x.num_cuota == n_cuota).First();

            if (cellSeleccion != null && Convert.ToBoolean(cellSeleccion.Value) == true)
            {
                cellSeleccion.Value = false;
                Actualizar_cuotas_seleccionadas(false, cuota_seleccionada);
            }
            else
            {
                if (cellSeleccion != null && Convert.ToBoolean(cellSeleccion.Value) == false)
                {
                    cellSeleccion.Value = true;
                    Actualizar_cuotas_seleccionadas(true, cuota_seleccionada);
                }
            }
        }

С другой стороны, я уже использую событие Onpaint. Это унаследовано, поэтому я стараюсь избегать его использования.

Ответы на вопрос(8)

Ваш ответ на вопрос