我有一个datagridview
呈现出贷款的分期付款。 我创建了一个datagridviewcheckbox
列这样的话,我可以选择我想要的支付分期付款。
这是数据网格的屏幕:
我的问题是,我需要禁用付费intallments的复选框。 在这种情况下,当“Restante”(what's左付)为= 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);
}
}
}
在另一方面,I'm已经使用OnPaint事件。 它继承了,这就是为什么我正尝试避免使用它。