Согласно MSDN:
Когда визуальные стили включены,
кнопки в столбце кнопок окрашены
используя ButtonRenderer и ячейку
стили, указанные в свойствах
такие как DefaultCellStyle не имеют
эффект.
Следовательно, у вас есть один из двух вариантов. В вашем Program.cs вы можете удалить эту строку:
Application.EnableVisualStyles();
, что заставит его работать, но все остальное будет выглядеть как дерьмо. Другой вариант, который вам не понравится, - наследовать от DataGridViewButtonCell и переопределять метод Paint (). Затем вы можете использовать статический метод класса ButtonRenderer с именем DrawButton , чтобы нарисовать кнопку самостоятельно. Это означает выяснение, в каком состоянии находится ячейка в данный момент (щелчок, зависание и т. Д.) И рисование углов и границ и т. Д. Вы понимаете, это выполнимо, но ОГРОМНАЯ боль
Если вы хотите, вот лишь пример кода для начала:
//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);
}
}
Тогда вот тест DataGridView:
DataGridViewButtonColumn c = new DataGridViewButtonColumn();
c.CellTemplate = new MyButtonColumn();
this.dataGridView1.Columns.Add(c);
this.dataGridView1.Rows.Add("Click Me");
Все, что делает этот пример, рисует кнопку со шрифтом «Comic Sans MS». Он не учитывает состояние кнопки, как вы увидите при запуске приложения.
УДАЧИ !!