Ich habe einige benutzerdefinierte DataGridViewTextBoxCell
Instanzen. In den meisten von ihnen setze ich benutzerdefinierte ForeColor
Werte und das funktioniert gut. Aber wenn die SelectionMode
FullRowSelect
ist, überschreibt es meine ForeColor
Werte für diese Zelle.DataGridView benutzerdefinierte Zelle sollte normale ForeColor verwenden, wenn ausgewählt
Ich habe versucht, es im Draw-Ereignis zu setzen, wenn die Zelle ausgewählt ist, aber es funktioniert nicht.
Meine Zelle ist wie folgt definiert.
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);
}
}
Ich will nicht den Auswahlmodus ändern, aber ich möchte diese Zelle zeigen, mit dem rechten ForeColor
aber die Auswahl BackColor
.
Wie könnte die Lösung dafür aussehen?
Danke, es funktioniert. Ich weiß, dass ich die Ereignisse benutzen kann. Aber ich habe eine Menge Zellen im ganzen Programm, die auf die gleiche Weise mit einigen wirklich speziellen Regeln aussehen sollten. Also war es schöner, benutzerdefinierte Zellen dafür zu machen. – Booser
Sie kennen die Anforderungen besser, ich teilte es nur zu Ihrer Information oder für zukünftige Leser :) –