J'ai une vue DataGridView dans laquelle l'arrière-plan de chaque ligne est différent en fonction de l'élément lié aux données. Cependant, lorsque je sélectionne une ligne, je ne peux plus voir sa couleur de fond d'origine.Ligne DataGridView: sélection semi-transparente ou bordure de ligne à la sélection
Pour résoudre ce problème, j'ai pensé à deux solutions:
je peux faire semi-transparent les sélections, permettant de voir si deux lignes sélectionnées ont différentes couleurs de fond.
Ou; Je peux supprimer complètement les couleurs de sélection et dessiner une bordure autour des lignes sélectionnées.
Quelle est l'option la plus simple et comment puis-je faire?
C'est une application WinForm.
Edit: Je fini par utiliser une partie de votre code, à la dérive
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);
}
}
Cela donne l'impression d'une couleur de sélection semi-transparente. Merci de votre aide!
J'ai donné un coup de feu, et c'était bien. Il est alors apparu un nouveau problème - la couleur de sélection transparente avait l'air vraiment laide (le texte était sur le vieux texte et les choses, difficile à expliquer;)) après une sorte, donc je chercherai une autre solution. –
J'ai utilisé votre code pour créer une couleur de sélection semi-transparente à la place - voir modifier. Merci de votre aide! –