您的位置:首页 > 其它

DataGridView循环查找改进加了trycatch去除未将对象引用设置到对象的实例错误

2014-03-25 14:42 429 查看

DataGridView循环查找  

2010-03-13 00:10:02|  分类:

C#
|  标签: |举报
|字号大中小 订阅

      思路:查找匹配项,如果找到则使用下标控制器记录下标,下次查找时则从该下标开始查找,如果从记录的下标处未找到,此时notNull=TRUE,则进入 if (notNull)内,设置下标为0,从而可以从头开始再次查找,同时设置notNull=FALSE,并使用递归开始再次查找,此次查找有两种可能:

1 . 如果再次找到匹配项则notNull被设置为TRUE后直接跳出,重复以上说明

2 . 如果未找到匹配项则notNull未被设置为TRUE,不能进入 if (notNull)调用递归,弹出对话框后函数整体实行完毕

 

        int i = 0;   //行的下标控制器 (*****控制从第几行开始遍历*****)

        bool notNull = false;    //递归控制器 (*****控制是否可调用递归******)

        private void button4_Click(object sender, EventArgs e)

        {           

            foreach (DataGridViewRow dr in dgvMessage.SelectedRows) //取消行的选中

            {

                dr.Selected = false;

            }

           

            for (int a = i; a < dgvMessage.Rows.Count; a++)  //遍历行

            {

                foreach (DataGridViewCell dgvc in dgvMessage.Rows[a].Cells) //遍历单元格

                {

                 try{

                    if (dgvc.Value.ToString().Contains(this.txtName.Text)) //判断是否匹配

                    {

                        dgvMessage.Rows[a].Selected = true;  //如果匹配则选中该行

                        dgvMessage.FirstDisplayedScrollingRowIndex = a;  //滚动条滑自该行

                        i = a + 1;  //使下次遍历从该行的下一行开始查找

                        notNull = true;

                        return;   //设置notNull为真,跳出

                    }

                  }

catch

                    { }

                    finally

                    { }

                }

               

            }

            if (notNull) //始终未找到匹配项则进入

            {

                i = 0;  //重置从第一行遍历

                notNull = false;  //设置notNull为假,如果再一次从第一行遍历未找到匹配项则不会再进入IF调用递归

                button4_Click(sender, e); //递归

            }

            else

            {

                MessageBox.Show("未找到!!");

            }

        }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐