关于C# Winform DataGridView 设置DefaultCellStyle无效的原因与解决方案
上周在开发Winform 项目中,我曾遇到一个看似简单,但一直都没有解决的问题,那就是:设置winform DataGridView控件的行DefaultCellStyle,但却没有任何变化,我也曾求助于博问:http://q.cnblogs.com/q/72294/,但大家给的答案没有一个能解决这个问题,可能是问题重现不太容易,我自己也曾多次在其它项目中尝试重现这个问题,但一直都是正确的,没有出现我当前项目的问题,简直要崩溃啊!
先来看看我原有的代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
private void Form1_Load( object sender, EventArgs e)
{
dataGridView1.SetHeader<Zwj.TEMS.Entities.AssetDetail>(t => t.AssetSingleNo, t => t.BaseInfo.Name, t => t.BaseInfo.Category.CategoryName,
t => t.Price, t => t.ProcureImport.Date, t => t.State.State);
LoadData();
}
private void LoadData()
{
var resultList = QueryBusiness<ProcureExport>.GetList(t => true , //这里演示就直接忽略条件
t => new
{
t.AssetSingleNo,
t.AssetSingleInfo.BaseInfo.Name,
t.AssetSingleInfo.BaseInfo.Category.CategoryName,
t.AssetSingleInfo.Price,
t.AssetSingleInfo.ProcureImport.Date,
t.AssetSingleInfo.State.State
},t =>t.AssetSingleNo,1,10);
dataGridView1.DataSource = resultList;
int entityInListIndex = 1;
dataGridView1.Rows[entityInListIndex].DefaultCellStyle = new DataGridViewCellStyle() { ForeColor = Color.Blue, Font = new Font( "Arial" , 11F, FontStyle.Bold) };
}
|
最终呈现的效果如下:
从上面的表格中可以看出,第2行(索引为1,实际为第2行)没有任何效果。当然如果你将这些代码及表格复制到其它项目中,可能不会出现这样的问题,这就是很烦人的事情。为了解决这个简单问题,搞清楚原因,今天一上班,我又开始进行测试与继续在网上找答案,终于功夫不负有心人,终于在微软的社区中发现有人也提到这样的问题,并解决了,地址是:https://social.microsoft.com/Forums/zh-CN/d928e42d-9e10-4b1a-b2ee-2694894f47af/datagridview?forum=visualcshartzhchs,这里面提到:
重新把所有绑定的数据在显示一遍,这里有一点延时,导致颜色其实没有设置到正确显示的row上。在DatabindingCompleted 时间里面,确保所有的数据 都已经绑定完成,这时候 能够确保 设置在正确的 行上面。
问题原因找到了,原来是绑定后,数据有延迟,必须确认数据绑定完成后,才能进行样式设置,基于这个原因,我修正了一下代码,将原设置Style的代码放到DataBindingComplete事件中,如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
private void Form1_Load( object sender, EventArgs e)
{
dataGridView1.SetHeader<Zwj.TEMS.Entities.AssetDetail>(t => t.AssetSingleNo, t => t.BaseInfo.Name, t => t.BaseInfo.Category.CategoryName,
t => t.Price, t => t.ProcureImport.Date, t => t.State.State);
dataGridView1.DataBindingComplete += new DataGridViewBindingCompleteEventHandler(dataGridView1_DataBindingComplete);
LoadData();
}
private void LoadData()
{
var resultList = QueryBusiness<ProcureExport>.GetList(t => true , //这里演示就直接忽略条件
t => new
{
t.AssetSingleNo,
t.AssetSingleInfo.BaseInfo.Name,
t.AssetSingleInfo.BaseInfo.Category.CategoryName,
t.AssetSingleInfo.Price,
t.AssetSingleInfo.ProcureImport.Date,
t.AssetSingleInfo.State.State
},t =>t.AssetSingleNo,1,10);
dataGridView1.DataSource = resultList;
}
private void dataGridView1_DataBindingComplete( object sender, DataGridViewBindingCompleteEventArgs e)
{
int entityInListIndex = 1;
dataGridView1.Rows[entityInListIndex].DefaultCellStyle = new DataGridViewCellStyle() { ForeColor = Color.Blue, Font = new Font( "Arial" , 11F, FontStyle.Bold) };
}
|
效果如下:
问题终于解决了,虽然是一个小问题,但若不明白原理及找到问题根源,小问题也会变成大问题,所以从这个问题中告诫我自己及大家:不要轻视任何一个问题,要有刨根问底的决心,每一个问题都要找到根本原因,不仅要知道如何做,还要明白为什么要这样做,这样才会成长。
关于C# Winform DataGridView 设置DefaultCellStyle无效的原因与解决方案相关推荐
- mint-ui Infinite scroll 重复加载、加载无效的原因及解决方案
mint-ui Infinite scroll 重复加载.加载无效的原因及解决方案 参考文章: (1)mint-ui Infinite scroll 重复加载.加载无效的原因及解决方案 (2)http ...
- winform datagridview 设置标题
1.利用datagridview的HeadText来修改标题 如图: 代码如下: View Code 1 private void InitDataGridViewHead() 2 ...
- Laravel 中使用Goutte + GuzzleHttp 组件设置 headers无效的原因探究以及解决方案
我的个人博客:逐步前行STEP 使用Goutte + GuzzleHttp 爬取网页时,如下代码中的请求头设置无效: $jar = CookieJar::fromArray(["HMACCO ...
- C#设置DataGridView行背景色无效的问题
C#设置DataGridView行背景色无效的问题 设置代码 for (int i = 0; i < dataGridView1.RowCount; i++){if (i % 2 == 0){d ...
- Winform中DataGridView设置前景色、单元格背景色、标题栏样式、禁止改变高宽、不显示空白行、清除选中样式、填充数据源、设置标题、设置单列宽度
场景 Winform中使用DataGridView实现加载数据并显示在led大屏中. 需要设置整个DataGridView的前景色.背景色.单元格颜色.标题栏样式.禁止 改变行高.列宽.不显示新增行. ...
- C# winform DataGridView 常见属性
C# winform DataGridView 常见属性 C# winform DataGridView 属性说明 ① 取得或者修改当前单元格的内容 ② 设定单元格只读 ③ 不显示最下面的新行 ④ 判 ...
- C# WinForm dataGridView 技巧小结
C# WinForm dataGridView 技巧小结 1.不显示第一个空白列 RowHeaderVisible属性设置为false 2.点击cell选取整行 SelectinModel 属性Ful ...
- DataGridView设置单元格的提示内容ToolTip详解
这篇文章介绍了DataGridView设置单元格提示内容ToolTip的方法,文中通过示例代码介绍的非常详细.对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 ToolTip属性用来设置 ...
- edittext 监听无效_Android中EditText 设置 imeOptions 无效问题的解决方法
有时候我们需要在EditText 输出完之后 需要在键盘出现 右下角变成"Go"或"前往 搜索时:通常我们需要设置Android:imeOptions属性.Androi ...
最新文章
- 100%抄袭!ICLR 2022投稿竟公然剽窃两篇顶会,程序主席放「实锤」严词拒稿
- html圆角兼容jq,IE兼容css3圆角的htc解决方法
- 转 -----那些年总也记不牢的IO
- 【剑指offer】二叉树的深度_solution2
- 一个关于数学归纳法的悖论问题-续
- 主成分分析碎石图_ISLR读书笔记十九:主成分分析(PCA)
- Tooltip工具提示控件的使用
- Chrome 浏览器关闭了360主页防护后每次打开仍然是360导航问题排查与处理方法,不卸载360流氓软件解决chrome浏览器主页锁定问题
- 获取Excel合并单元格的值
- mathtype打出花体小写字母
- Mysql之分组查询
- 虚拟主机.htaccess伪静态(URL重写)建立多站点
- 杭电ACM 2094 产生冠军——C语言)
- Koa2仿知乎服务端项目:Webpack配置
- 计算机动画 vr技术应用,三维动画与VR交互和虚拟现实性技术的结合
- Android Google Map实例 - 在地图和卫星图之间切换(Android mapview)
- spring xsd 加载问题
- 最新代码大全《让你成为空间明星》
- 鱼c笔记——Python字典(二)
- 大数据技术与应用专业
热门文章
- OpenCV腐蚀和膨胀Eroding and Dilating
- Qt Creator造型Modeling
- Qt Creator添加3D视图
- 08_添加图例、添加标题(Adding a Title)
- 05_数据的特征处理,归一化,标准化、缺失值处理,以及案例,使用场景,处理办法等
- 6种CSS控制元素上下居中效果
- 创建一个存储过程,返回指定员工的姓名和薪水
- Mysql数据唯一约束与唯一索引案例总结及踩坑记(含NULL值与唯一约束唯一索引的搭配使用)
- 窗口分析函数_4_计算累加值
- python函数调用时的实参和形参之间传递_python 函数(实参与形参、传递参数)...