Ukryj komórkę pola wyboru datagridview
mamdatagridview
wyświetlanie rat kredytu. Stworzyłemdatagridviewcheckbox
tak więc mogę wybrać wszystkie raty, za które chcę zapłacić.
To jest ekran datagrid:
Mój problem polega na tym, że muszę wyłączyć pola wyboru płatnych nieruchomości. W tym przypadku, gdy „Restante” (to, co pozostało do zapłaty) jest= 0
.
Przeczytałem kilka postów, w których użyli zdarzenia paint, aby nie wyświetlać komórki pola wyboru, ale nie podobało mi się to rozwiązanie. Myślałem o ukryciu komórki z polem wyboru, ale nie wiem, czy jest to możliwe.
To właśnie próbowałem:
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;
}
}
Oczywiście to nie działa, otrzymuję komunikat o błędzie kompilatora informujący, że właściwość jest tylko do odczytu.
Czy ktoś wie, jak ustawić komórkę pola wyboru na niewidoczną?
Na wszelki wypadek dołączamDataGridViewCheckboxColumn
kod tworzenia:
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;
EDYTOWAĆ:
Kilka uwag:
Używam zdarzenia kliknięcia treści komórki do obsługi pól wyboru, więc tylko nie przyzwyczajenie pracować. Chcę ukryć pole wyboru:
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);
}
}
}
Z drugiej strony, już używam zdarzenia Onpaint. Jego odziedziczone, dlatego staram się go unikać.