Ich habe eine DataGridView und ich möchte dem Operator zeigen, welche Werte geändert werden, indem Sie diesen Werten eine andere ForeColor geben. Der Bediener kann entscheiden, alle Änderungen zu verwerfen, indem er auf die Schaltfläche Verwerfen klickt. In diesem Fall muss die Zelle die ererbten Stile verwenden.Wie man DataGridViewCellStyle auf seinen geerbten Wert zurücksetzt
Mein Problem ist, dass, sobald ich ein CellStyle erstellt, um anzugeben, dass es geändert wird, kann ich dies nicht rückgängig machen, so dass die Zelle den geerbten Stil verwendet.
Ich habe etwas recherchiert. In dem Artikel Cell Styles in the Windows Forms DataGridView Control MSDN warnt:
die Werte in der Zelle der Style-Eigenschaft wichtig gespeichert Caching ist unabhängig davon, ob ein bestimmte Stil Wert eingestellt ist. Wenn Sie eine Stileinstellung vorübergehend ersetzen, stellt die Wiederherstellung auf den ursprünglichen Zustand "not set" sicher, dass die Zelle die Einstellung von einer höheren Ebene übernimmt.
Ach, das scheint nicht zu funktionieren:
DataGridViewCell cell = ...;
Debug.Assert(!cell.HasStyle); // cell is not using its own style
var cachedColor = cell.Style.ForeColor; // cache the original color
cell.Style.ForeColor = Color.Red; // indicate a change
Debug.Assert(cell.HasStyle); // now cell is using its own style
// restore to the 'not set' state:
cell.Style.ForeColor = cachedColor;
Debug.Assert(!cell.HasStyle); // exception, not using inherited style
cell.Style = cell.InheritedStyle; // try other method to restore
Debug.Assert(!cell.HasStyle); // still exception
So Frage: Wie der Stil Einstellung zu seinem ursprünglichen „nicht gesetzt“ Zustand wiederherstellen?