首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

关于上午的一个C#有关问题的总结!你肯定学到东西!(涉及两个关于DataGridView控件的关键点!)重要关键)

2013-08-25 
关于上午的一个C#问题的总结!你肯定学到东西!(涉及两个关于DataGridView控件的关键点!)重要关键)本帖最后

关于上午的一个C#问题的总结!你肯定学到东西!(涉及两个关于DataGridView控件的关键点!)重要关键)
本帖最后由 hufanrong123 于 2013-08-20 17:37:03 编辑 上午的帖子的地址!
http://bbs.csdn.net/topics/390555941?page=1#post-395348412
原帖中的代码是这样的:

int k,m;
            for(k=0;k<dataGridView.RowCount;++k)
            {
                for (m = 1; m<dataGridView.RowCount;++m )
                {
                    if ((m>k)&&(dataGridView.Rows[k].Cells["keyword"].Value == dataGridView.Rows[m].Cells["keyword"].Value))
                    {
                        dataGridView.Rows[m].Cells["keyword"].Value = null;
                    }
                }
            }

结合各位网友的回答之后修改之后的代码:
for(int k=0;k<dataGridView.RowCount;++k)
            {
                for (int m = k+1;m<dataGridView.RowCount&&dataGridView.Rows[m].Cells[1].Value!=null;++m )
                {
                    if (dataGridView.Rows[k].Cells[1].Value.ToString()== dataGridView.Rows[m].Cells[1].Value.ToString())
                    { dataGridView.Rows[m].Cells[1].Value = ""; }
                }
            }

哈哈,貌似比原来的代码还短了!
下面就来简单分析一下:
1.(最重要)关键点①:详见@hsy_2011这位网友的回答。归纳起来就是datagridview控件的单元格是个Object的类型,所以得到的值虽然是一样,但是没法相等无法做“==”运算。所以就会出现点击之后程序不报错,也没有反映的问题!解决方法就是转换为其他类型进行比较!比如string类型!
2.(最重要)关键点②:这个关键点@hsy_2011这位网友在回复中其实也说过,我只是忽略了,但是@jb357575308这位网友提醒了我。主要问题就是datagridview的值不能赋值为null!比如你这样写“dataGridView.Rows[m].Cells[1].Value = null;”,程序就会报错“未将对象引用设置到对象的实例”(至少在我的程序里面)。所以@hsy_2011这位网友让我做一个“判断一个dataGridView.Rows[m].Cells[1].Value是否为null”的检查,这个其实之前我有写,主要是想减少遍历次数。但为了减少代码的长度,方便大家查找问题就没写。总结起来就是

datagridview控件中的单元格不可以直接赋值为"null",但是可以判断其是否为"null",别扭吧!
好了,
@hsy_2011得7分(其实是想给20分的,但是考虑到各位网友都很热情,就索性分一些出来吧!)
@jb357575308得7分(让我灵光一现,最终解决问题!)
@starfd得4分(感谢他让我在代码书写上有了一个新的技巧)
@hwenycocodq520 2分(感谢他对我问题的一直关注!)

题外话:我今天总结的这些问题可能在高手看来都属于不足道或者根本不屑一顾,但是我只是想总结出来让更多新手朋友学到一些东西,少走弯路!毕竟我不是专业的编程人员,学习C#从不懂到能编出几个小程序只用了半个月,所以以后有问题还请大家多多帮忙!关于上午的一个C#有关问题的总结!你肯定学到东西!(涉及两个关于DataGridView控件的关键点!)重要关键) C# DataGridView 控件 对象 类
[解决办法]
==,能不能用equles()做比较。
这帖似乎0分比较合适。
[解决办法]
这个控件太难用,除非读一遍源码否则处处是陷阱,取值赋值问题多表头问题绑定问题效率问题。。
[解决办法]
支持这样的总结。奖励你100分可用分。
[解决办法]
nice这样的总结才是有理有据,不错不错。

热点排行