Según MSDN:
Cuando estilos visuales están habilitados, los botones en una columna de botón están pintadas utilizando un ButtonRenderer y teléfonos estilos especificado a través de las propiedades como DefaultCellStyle no tienen efecto .
Por lo tanto, tiene una de dos opciones. En sus Program.cs puede quitar esta línea:
Application.EnableVisualStyles();
que hacer que funcione, pero que todo lo demás parece la mierda. Su otra opción, y no le va a gustar, es heredar de DataGridViewButtonCell y anular el método Paint(). A continuación, puede utilizar el método estático en la clase ButtonRenderer llamada DrawButton, para pintar el botón usted mismo. Eso significa averiguar en qué estado se encuentra actualmente la célula (hacer clic, desplazarse, etc.) y pintar las esquinas y los bordes, etc. ... Se entiende la idea, es factible, pero un dolor ENORME.
Si desea embargo, aquí sólo algunos ejemplos de código para empezar:
//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);
}
}
Entonces aquí está un DataGridView prueba:
DataGridViewButtonColumn c = new DataGridViewButtonColumn();
c.CellTemplate = new MyButtonColumn();
this.dataGridView1.Columns.Add(c);
this.dataGridView1.Rows.Add("Click Me");
Todo esto muestra no, es pintar un botón con la fuente es "Comic Sans MS". No tiene en cuenta el estado del botón como lo verá cuando ejecuta la aplicación.
GOOD LUCK !!
En mi caso, tuve que representar otras partes del botón también de las celdas, es decir, líneas de cuadrícula, etc. Como una solución rápida y sucia, puede llamar a base.Pintura (...), los grupos de celdas DEFLATE por un par de píxel (para asegurarse de que el área alrededor del botón se mantendrá), y luego llamar a ButtonRenderer.DrawButton – Alex