我有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;
编辑:
一些考虑:
我使用单元格内容单击事件来处理复选框,因此 readonly 不起作用。我想要的是隐藏复选框:
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 事件了。它是继承的,这就是我试图避免使用它的原因。