Per MSDN:
Wenn visuelle Stile aktiviert sind, die Tasten in einer Tastenspalte sind bemalt eine ButtonRenderer verwenden und Zelle Stile durch Eigenschaften angegeben wie DefaultCellStyle haben keine Wirkung.
Daher haben Sie eine von zwei Möglichkeiten. In Ihrem Program.cs können Sie diese Zeile entfernen:
Application.EnableVisualStyles();
, die es funktionieren wird, aber alles andere sehen aus wie Mist machen. Ihre andere Option, und Sie werden diese nicht mögen, ist von DataGridViewButtonCell erben und überschreiben Sie die Paint() -Methode. Sie können dann die statische Methode ButtonRenderer Klasse DrawButton verwenden, um den Button selbst zu malen. Das heißt, herauszufinden, in welchem Zustand sich die Zelle gerade befindet (angeklickt, schweben usw.) und die Ecken und Ränder bemalen usw. Sie bekommen die Idee, es ist machbar, aber ein GROSSER Schmerz.
Wenn Sie wollen, obwohl zu, hier ist nur ein Beispielcode für den Anfang:
//Custom ButtonCell
public class MyButtonCell : DataGridViewButtonCell
{
protected override void Paint(Graphics graphics, Rectangle clipBounds, Rectangle cellBounds, int rowIndex, DataGridViewElementStates elementState, object value, object formattedValue, string errorText, DataGridViewCellStyle cellStyle, DataGridViewAdvancedBorderStyle advancedBorderStyle, DataGridViewPaintParts paintParts)
{
ButtonRenderer.DrawButton(graphics, cellBounds, formattedValue.ToString(), new Font("Comic Sans MS", 9.0f, FontStyle.Bold), true, System.Windows.Forms.VisualStyles.PushButtonState.Default);
}
}
Dann ist hier ein Test Datagridview:
DataGridViewButtonColumn c = new DataGridViewButtonColumn();
c.CellTemplate = new MyButtonColumn();
this.dataGridView1.Columns.Add(c);
this.dataGridView1.Rows.Add("Click Me");
All dies Stichprobe ist eine Schaltfläche malen mit Die Schriftart ist "Comic Sans MS". Der Status der Schaltfläche wird nicht berücksichtigt, wie Sie beim Ausführen der App sehen.
GOOD GLÜCK !!
In meinem Fall musste ich dann auch die Schaltfläche selbst Teile von Zellen rendern, also Gitterlinien etc. Als eine schnelle-n-dreckige Lösung kann man base.Paint (...), die DEFLATE cellBounds von einem Paar nennen von Pixel (um sicherzustellen, dass der Bereich um die Schaltfläche bleibt), und dann ButtonRenderer.DrawButton – Alex