J'ai créé des instances personnalisées DataGridViewTextBoxCell
. Dans la plupart d'entre eux, j'ai mis ForeColor
valeurs personnalisées et cela fonctionne bien. Mais lorsque le SelectionMode
est FullRowSelect
, il remplace mes valeurs ForeColor
pour cette cellule.La cellule personnalisée DataGridView doit utiliser la propriété ForeColor normale lorsqu'elle est sélectionnée.
J'ai essayé de le définir dans l'événement Draw lorsque la cellule est sélectionnée, mais cela ne fonctionne pas.
Ma cellule est définde comme suit.
public class CustomCell : DataGridViewTextBoxCell
{
protected override object GetFormattedValue(object value, int rowIndex, ref DataGridViewCellStyle cellStyle, TypeConverter valueTypeConverter, TypeConverter formattedValueTypeConverter, DataGridViewDataErrorContexts context)
{
if (string.IsNullOrEmpty(value.ToString()))
{
return base.GetFormattedValue(value, rowIndex, ref cellStyle, valueTypeConverter, formattedValueTypeConverter, context);
}
if (value.ToString().Contains("test"))
{
cellStyle.ForeColor = Color.Blue;
}
return base.GetFormattedValue(value, rowIndex, ref cellStyle, valueTypeConverter, formattedValueTypeConverter, context);
}
}
Je ne veux pas changer le mode de sélection, mais je veux montrer cette cellule avec son droit ForeColor
mais la sélection BackColor
.
À quoi la solution pourrait-elle ressembler?
Merci, cela fonctionne. Je sais que je peux utiliser les événements. Mais j'ai beaucoup de cellules dans tout le programme qui devrait ressembler à des règles vraiment spéciales. Il était donc plus agréable de créer des cellules personnalisées pour cela. – Booser
Vous connaissez mieux les exigences, je l'ai partagé juste pour votre information ou pour les futurs lecteurs :) –