C# Winforms中Bunifu DataGridView表头选中背景色设置无效求助
解决Bunifu DataGridView表头选中背景色不生效的问题
针对你遇到的Bunifu DataGridView表头选中背景色无法应用的问题,可尝试以下几种解决方案:
1. 设置后强制应用主题
直接修改CurrentTheme的属性后,可能需要手动触发控件的主题应用逻辑,确保样式生效:
// 设置主题颜色 dataGridView1.CurrentTheme.HeaderStyle.BackColor = ThemeColor.PrimaryColor; dataGridView1.CurrentTheme.HeaderStyle.SelectionBackColor = ThemeColor.SecondaryColor; dataGridView.CurrentTheme.HeaderStyle.BackColor = ThemeColor.PrimaryColor; dataGridView.CurrentTheme.HeaderStyle.SelectionBackColor = ThemeColor.SecondaryColor; // 强制应用主题 dataGridView1.ApplyTheme(); dataGridView.ApplyTheme();
2. 同步设置ColumnHeadersDefaultCellStyle
Bunifu DataGridView的表头样式可能同时受CurrentTheme和原生ColumnHeadersDefaultCellStyle影响,可同时设置后者确保选中样式生效:
// 确保表头允许选中 dataGridView1.ColumnHeadersSelectable = true; dataGridView.ColumnHeadersSelectable = true; // 设置原生样式的选中背景色 dataGridView1.ColumnHeadersDefaultCellStyle.SelectionBackColor = ThemeColor.SecondaryColor; dataGridView.ColumnHeadersDefaultCellStyle.SelectionBackColor = ThemeColor.SecondaryColor;
3. 通过CellPainting事件手动绘制
如果上述方法都无效,可通过自定义绘制事件直接控制表头选中单元格的外观:
// 为两个DataGridView订阅CellPainting事件 dataGridView1.CellPainting += BunifuDataGridView_CellPainting; dataGridView.CellPainting += BunifuDataGridView_CellPainting; // 事件处理方法 private void BunifuDataGridView_CellPainting(object sender, DataGridViewCellPaintingEventArgs e) { var dgv = sender as BunifuDataGridView; if (dgv == null) return; // 判断是否为表头单元格且处于选中状态 if (e.RowIndex == -1 && e.ColumnIndex >= 0 && dgv.Columns[e.ColumnIndex].HeaderCell.Selected) { // 绘制选中背景色 e.Graphics.FillRectangle(new SolidBrush(ThemeColor.SecondaryColor), e.CellBounds); // 绘制表头文本 e.PaintContent(e.ClipBounds); // 取消默认绘制 e.Handled = true; } }
注意:如果使用CellPainting方法,建议在窗体关闭时取消事件订阅,避免内存泄漏。
内容的提问来源于stack exchange,提问作者Emmanuel James
相关产品推荐
相关产品推荐

