当前位置:  开发笔记 > 编程语言 > 正文

更改DataGridView单元格中按钮的颜色

如何解决《更改DataGridView单元格中按钮的颜色》经验,为你挑选了2个好方法。

我有一个大型DataGridView控件,它有几个单元格,其中大部分包含一个按钮.如何更改这些按钮的颜色?

这会更改按钮的"轮廓",但不会更改按钮本身.

row.Cells[2].Style.BackColor = System.Drawing.Color.Red;

这似乎没有改变任何可见的东西:

row.Cells[2].Style.ForeColor = System.Drawing.Color.Red;

如果无法更改背景,是否可以更改按钮上的字体?

使用.NET 2.0.



1> 小智..:

我错过了Dave关于Tomas答案的说明,所以我只是发布了简单的解决方案.

将Button列的FlatStyle属性更新为Popup,然后通过更新背景颜色和forecolor,您可以更改按钮的外观.

DataGridViewButtonColumn c = (DataGridViewButtonColumn)myGrid.Columns["colFollowUp"];
c.FlatStyle = FlatStyle.Popup;
c.DefaultCellStyle.ForeColor = Color.Navy;
c.DefaultCellStyle.BackColor = Color.Yellow;



2> BFree..:

根据MSDN:

启用视觉样式时,按钮列中的按钮使用ButtonRenderer绘制,而通过DefaultCellStyle等属性指定的单元格样式不起作用.

因此,您有两种选择之一.在Program.cs中,您可以删除此行:

Application.EnableVisualStyles();

这将使它工作,但让其他一切看起来像垃圾.你的另一个选择,你不会喜欢这个,是从DataGridViewButtonCell继承并覆盖Paint()方法.然后,您可以在名为DrawButtonButtonRenderer类上使用静态方法,自己绘制按钮.这意味着要弄清楚细胞当前处于哪种状态(点击,悬停等)并绘制角落和边界等等......你明白了,它是可行的,但却是巨大的痛苦.

如果您愿意,这里只是一些示例代码来帮助您入门:

 //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"的按钮.它不会考虑您在运行应用程序时看到的按钮状态.

祝好运!!

推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有