Tengo un DataGridView donde el fondo de cada fila es diferente dependiendo del elemento vinculado a los datos. Sin embargo, cuando selecciono una fila, ya no puedo ver su color de fondo original.Fila de DataGridView: selección semitransparente o borde de fila en la selección
Para solucionar esto, he pensado en dos soluciones:
que puede hacer las selecciones semitransparente, por lo que es posible ver si dos filas seleccionadas tienen diferentes colores de fondo.
O; Puedo eliminar completamente los colores de selección y dibujar un borde alrededor de las filas seleccionadas.
¿Qué opción es más fácil y cómo puedo hacer esto?
Es una aplicación WinForm.
Editar: Terminé usando algunos de su código, a la deriva
private void dgv_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)
{
if (dgv.Rows[e.RowIndex].Selected)
{
var row = dgv.Rows[e.RowIndex];
var bgColor = row.DefaultCellStyle.BackColor;
row.DefaultCellStyle.SelectionBackColor = Color.FromArgb(bgColor.R * 5/6, bgColor.G * 5/6, bgColor.B * 5/6);
}
}
Esto da la impresión de un color de selección semitransparente. ¡Gracias por tu ayuda!
He probado esto, y estaba bien. Luego apareció un nuevo problema: el color de la selección transparente parecía realmente feo (el texto estaba sobre el texto antiguo y otras cosas difíciles de explicar;) después de una clasificación, así que buscaré otra solución. –
Usé su código para crear un color de selección semitransparente en su lugar - vea editar. ¡Gracias por tu ayuda! –