datagridview选中获取行号_DataGridView控件显示行号的正确代码及分析

前些天在写个小程序,用到DataGridView,想给它动态的显示行号。不是很费劲GOOGLE了一下,这GOOGLE不要紧,发现了不少问题。以下基本上都是GOOGLE搜索出来的网上的一些解决方法,千篇一律都是这样的:

private void DataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)

{

for (int i = 0; i < e.RowCount; i++)

{

this.dgvKBRollUp.Rows[e.RowIndex + i].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight;

this.dgvKBRollUp.Rows[e.RowIndex + i].HeaderCell.Value = (e.RowIndex + i + 1).ToString();

}

for (int i = e.RowIndex + e.RowCount; i < this.dgvKBRollUp.Rows.Count; i++)

{

this.dgvKBRollUp.Rows[i].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight;

this.dgvKBRollUp.Rows[i].HeaderCell.Value = (i + 1).ToString();

}

}

private void DataGridView1_RowsRemoved(object sender, DataGridViewRowsRemovedEventArgs e)

{

for (int i = 0; i < e.RowCount; i++)

{

this.dgvKBRollUp.Rows[e.RowIndex + i].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight;

this.dgvKBRollUp.Rows[e.RowIndex + i].HeaderCell.Value = (e.RowIndex + i + 1).ToString();

}

for (int i = e.RowIndex + e.RowCount; i < this.dgvKBRollUp.Rows.Count; i++)

{

this.dgvKBRollUp.Rows[i].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight;

this.dgvKBRollUp.Rows[i].HeaderCell.Value = (i + 1).ToString();

}

}

只要用过这段代码的人就应该发现这段代码是运行出错的。原因就出在RowsRemoved事件里,会抛出一个Index outof range的异常。然而就是这么一段有错的代码,几乎充斥着整个互联网,千篇一律的COPY,没有一个人纠正。

先说下这段代码出错的原因吧:在RowsRemoved事件里,最开始生成DataGridView的数据的时候,也是会触发这个事件的。这个时候DataGridView控件的Rows.Count就是0。那下面这行代码就有问题了:

this.dgvKBRollUp.Rows[e.RowIndex + i].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight;

e.RowIndex + i,这里对应的是Rows[0],但是Rows.Count还是0啊,Rows[0]是不存在的。要存在Rows[0]起码DataGridView控件要有一行才行。为了避免这个错误,小小的修改代码就行了:

private void dgvKBRollUp_RowsRemoved(object sender, DataGridViewRowsRemovedEventArgs e)

{

if (dgvKBRollUp.Rows.Count != 0)

{

for (int i = 0; i < e.RowCount; i++)

{

this.dgvKBRollUp.Rows[e.RowIndex + i].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight;

this.dgvKBRollUp.Rows[e.RowIndex + i].HeaderCell.Value = (e.RowIndex + i + 1).ToString();

}

for (int i = e.RowIndex + e.RowCount; i < this.dgvKBRollUp.Rows.Count; i++)

{

this.dgvKBRollUp.Rows[i].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight;

this.dgvKBRollUp.Rows[i].HeaderCell.Value = (i + 1).ToString();

}

}

只要加上一个对Rows.Count的判断就可以避免这个错误。希望网上的一些COPY的朋友也要注意了,以后COPY过来的时候,自己还是要动手验证一下。将一个错误的信息胡乱的传播是对一些新手以及自己都不怎么好的。

最后附上微软MSDN里面关于e.RowIndex和e.RowCount的一段代码:

System.Text.StringBuilder messageBoxCS = new System.Text.StringBuilder();

messageBoxCS.AppendFormat("{0} = {1}", "RowIndex", e.RowIndex);

messageBoxCS.AppendLine();

messageBoxCS.AppendFormat("{0} = {1}", "RowCount", e.RowCount);

messageBoxCS.AppendLine();

MessageBox.Show(messageBoxCS.ToString(), "RowsRemoved Event");

通过这段代码你可以很轻松地跟踪事件参数里的e.RowIndex和e.RowCount的值。当然你可以DEBUG,一样的。我就是DEBUG的O(∩_∩)O~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/521650.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pmsm simulink foc 仿真_仿真软件教程

很多朋友都建议我做个视频的整理&#xff0c;方便没看过之前内容的朋友方便查找&#xff0c;我觉得这个确实很有必要。下面内容是关于仿真软件方面&#xff1a;仿真环境&#xff1a;Simlpis 8.0类型简介VMC和CMC的LLC控制器仿真对比 第一节图文电压模式和电流模式LLC控制器的简…

日志采集中的关键技术分析

摘要&#xff1a; 从日志投递的方式来看&#xff0c;日志采集又可以分为推模式和拉模式&#xff0c;本文主要分析的是推模式的日志采集。概述日志从最初面向人类演变到现在的面向机器发生了巨大的变化。最初的日志主要的消费者是软件工程师&#xff0c;他们通过读取日志来排查问…

限时早鸟票 | 2019 中国大数据技术大会(BDTC)超豪华盛宴抢先看!

2019 年12月5-7 日&#xff0c;由中国计算机学会主办&#xff0c;CCF 大数据专家委员会承办&#xff0c;CSDN、中科天玑数据科技股份有限公司协办的 2019 中国大数据技术大会&#xff0c;将于北京长城饭店隆重举行。届时&#xff0c;超过百位技术专家及行业领袖将齐聚于此&…

机器学习和数据科学领域必读的10本免费书籍

摘要&#xff1a; 暑期来了&#xff0c;别出去溜达了&#xff0c;看书学习一波&#xff5e;在这个暑假&#xff0c;有兴趣的可以阅读一下这些免费的有关机器学习和数据科学的书籍&#xff0c;他们能给你打开一扇看清机器学习和数据科学的窗。如果在阅读完这一文章后想知晓更多免…

sw运行很卡怎么办_windows10系统SolidWorks运行速度很慢如何解决

在windos10系统电脑中使用SolidWorks时&#xff0c;发现软件运行速度很慢&#xff0c;感觉非常烦恼。这是怎么回事呢&#xff1f;SolidWorks是基于Windows平台来开发的&#xff0c;所以Windows的一些设置也会影响SW的运行速度&#xff01;下面&#xff0c;就随小编一起看看让So…

microsoft账号登陆一直在加载_英雄联盟手游下载,附带拳头账号注册教程

欢迎关注【花卷来了】公众号。如果喜欢本期节目请点赞、再看、分享给朋友吧~软件资源请回复文章底部今日关键词获取/排版&#xff1a;萌萌哒花卷/来源&#xff1a;采集自网络今日主题&#xff1a;最新英雄联盟手游下载&#xff0c;附带拳头账号注册教程英雄联盟手游今天正式公测…

SSM框架整合druid查看监控数据

一、添加druid依赖 <!--数据库连接池--> <dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.19</version> </dependency>二、spring-mybatis.xml配置文件中druid的配置 <!--…

机器学习者都应该知道的五种损失函数!

摘要&#xff1a; 还不知道这五种损失函数&#xff1f;你怎么在机器学习这个圈子里面混&#xff1f;在机器学习中&#xff0c;所有的机器学习算法都或多或少的依赖于对目标函数最大化或者最小化的过程&#xff0c;我们常常把最小化的函数称为损失函数&#xff0c;它主要用于衡量…

linux服务器监控zabbix,Linux监控之--使用ZABBIX监控web服务器

使用ZABBIX监控web服务器实验拓扑图&#xff1a;实验思路&#xff1a;nginx添加状态统计模块&#xff0c;编写nginx对应的状态统计脚本。zabbix-server导入nginx模板&#xff0c;并对主机实现监控。实验环境角色IP地址操作系统版本软件包Zabbix_server192.168.0.158/24Centos6.…

Facebook 约十亿美元收购脑机技术公司,助攻AR研发;苹果宣布新款 Mac Pro 在美国生产;谷歌称已实现量子霸权…...

关注并标星星CSDN云计算极客头条&#xff1a;速递、最新、绝对有料。这里有企业新动、这里有业界要闻&#xff0c;打起十二分精神&#xff0c;紧跟fashion你可以的&#xff01;每周三次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go go 小米MIX Alpha手机官方概念图…

知道这些用于数据科学和机器学习的GitHub存储库和Reddit主题吗?

摘要&#xff1a; 5月最热门的GitHub存储库和顶级Reddit讨论&#xff0c;戳进来~GitHub和Reddit都是比较有趣的平台&#xff0c;在这里&#xff0c;我不仅学习了数据科学的一些最佳应用&#xff0c;而且还了解数据科学家们是如何编程的。一直以来&#xff0c;GitHub都是开发人员…

flutter的按钮如何变为不可选中_Flutter 61: 图解基本 Button 按钮小结 (一)

Button 在日常中是必不可少的&#xff0c;小菜尝试过不同类型的 Button&#xff0c;也根据需求自定义过&#xff0c;今天小菜系统的学习一下最基本的 Button&#xff1b;Flutter 中没有 Button Widget&#xff0c;但提供了很多不同类型的 Child Button Widget&#xff1b;小菜分…

l2-008 最长对称子串 (25分)_小学数学关于时间认识(时、分、秒)的几点总结

本文将通过对照学习一个个知识点&#xff0c;延伸出各种知识点的常用题型。一、时、分、秒之间的换算&#xff1a;1时60分 1分60秒这类题型考的是时间单位之间的换算&#xff0c;一种是大单位换小单位&#xff0c;一种是小单位换大单位。在之前的一篇文章里有关于换算的计算方法…

java.sql.SQLSyntaxErrorException: ORA-00923: 未找到要求的 FROM 关键字

ssm(Oracle)配置druid数据库连接池&#xff0c;正常启动项目&#xff0c;但是请求访问数据库时报错“java.sql.SQLSyntaxErrorException: ORA-00923: 未找到要求的 FROM 关键字”原因&#xff1a;jdbc配置 validationQuery:SELECT 1这是mysql的写法&#xff0c;oracle应改为 va…

linux中退格出现乱码,SSH中的SQL命令按退格键出现乱码的问题解决

用SSH调用SQLPLUS输入SQL语句&#xff0c;按backspace(退格键)出现 ^H的乱码如下所示&#xff1a;[oracleeven ~]$ sqlplus / as sysdbaSQL*Plus: Release 10.2.0.1.0 - Production on Fri Jun 6 00:09:23 2014Copyright (c) 1982, 2005, Oracle. All rights reserved.Connect…

三分钟学会如何在函数计算中使用 puppeteer

摘要&#xff1a; 使用 puppeteer 结合函数计算&#xff0c;可以快速的构建弹性的服务完成各种功能&#xff0c;包括&#xff1a;生成网页截图或者 PDF、高级爬虫&#xff0c;可以爬取大量异步渲染内容的网页、模拟键盘输入、表单自动提交、登录网页等&#xff0c;实现 UI 自动…

如何在阿里云上构建一个合适的Kubernetes集群

摘要&#xff1a; 声明 本文主要介绍如何在阿里云上构建一个K8S集群的实践&#xff0c;只是作为参考&#xff0c;大家可以根据实际情况做出调整。 集群规划 在实际案例中发现&#xff0c;有不少同学使用了很多的小规格的ECS来构建K8S集群&#xff0c;这样其实即没有达到省钱的目…

Could not load oracle/sql/converter_xcharset/lx20354.glb.

将WebRoot\WEB-INF\lib下的mysql-connector-java-5.1.7-bin.jar或者ojdbc14.jar剪贴 到Tomcat 6.0\lib下&#xff0c;移至Tomcat 6.0\lib下。

dedecms右侧悬浮_织梦dedecms网站上添加漂浮广告

在织梦dedecms的网站上添加漂浮广告其实很简单&#xff0c;这篇文章主要讲的是在织梦网站首页添加漂浮广告。我们用本地搭建的织梦默认模板演示。1、准备一个广告图片准备一个广告图片&#xff0c;命名为漂浮.gif &#xff0c;设置好图片大小150*150 &#xff0c;之后把图片放到…

360断网急救箱_万事不求人,教你自己动手修复网络断网

日常使用中&#xff0c;我们经常会遇到原来好好的网络忽然无法上网的问题。在排除宽带没有问题&#xff0c;硬件交换机、路由器、网线没有问题的情况下&#xff0c;我们可以充分利用第三方工具的修复功能。前几天&#xff0c;我就遇到一例电脑不能上网的问题&#xff0c;同一办…