listView1.SelectedItems选中行要注意count>0[通俗易懂]

listView1.SelectedItems选中行要注意count>0[通俗易懂]在右边的ListView中选中一行,就把选中行的第二列里的值显示在textBox里 。但是当我第一次选择一行时没有什么问题,当我第二次选择一行时就出现下面的错误:未处理ArgumentOutOfRangeException InvalidArgument=“0”的值对于“index”无效。  参数名:index上网查找说是要加一句判断if(listView1.

大家好,又见面了,我是你们的朋友全栈君。

在右边的ListView中选中一行,就把选中行的第二列里的值显示在textBox里 。但是当我第一次选择一行时没有什么问题,当我第二次选择一行时就出现下面的错误:

未处理ArgumentOutOfRangeException

 InvalidArgument=“0”的值对于“index”无效。
  参数名: index

上网查找说是要加一句判断

if(listView1.SelectedItems.Count > 0) {
}

但是我不知道为什么要加这句判断。于是决定自己去寻找答案……….

经过多次测试,发现一个“秘密”。我新建了一个工程,窗体中只放了一个ListView,然后在SelectedIndexChanged事件中只加了一句代码:

        private void listView1_SelectedIndexChanged(object sender, EventArgs e)
         {

            int c=this.listView1.SelectedItems.Count;
         }

的是想看一下c=this.listView1.SelectedItems.Count的变化情况,第一次选择一行的时候,c=1,第二次选择一行的时候,执行了两遍SelectedIndexChanged事件,第一遍c=0,第二遍c=1,错误的根源就在第一遍执行SelectedIndexChanged事件的过程中。

然后我又选择多行进行测试,比如3行,那么SelectedIndexChanged事件就执行了4遍,第一遍c=0,第二遍c=1,第三遍c=2,第四遍c=3。

从上面的测试我得出了以下结论:

当第二次选择一行的时候,他是先把前一次选中的那一行取消,取消之后选中的行数c=this.listView1.SelectedItems.Count就变为了0(这时SelectedItems中没有内容,而去引用它,当然会出错),然后再去选中我们要选中的行,此时c=this.listView1.SelectedItems.Count又变为了1,即选中了一行。选择多行的时候也是类似的,一个看似很简单的过程事实是分多步进行的。这就是错误的根源所在,所以我们在引用SelectedItems的时候要先做一个判断,看SelectedItems.Count是否大于0。

任何错误都是有它的原因的,只要我们坚持就一定能够找到错误的根源。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/158275.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • moxa串口服务器配置说明(moxa串口驱动)

    串口服务器简介串口服务器提供串口转网络功能,能够将RS-232/485/422串口转换成TCP/IP网络接口,实现RS-232/485/422串口与TCP/IP网络接口的数据双向透明传输。使得串口设备能够立即具备TCP/IP网络接口功能,连接网络进行数据通信,极大的扩展串口设备的通信距离。MOXA串口服务器的工作方式1.TCP/UDP通讯模式:该模式下,串口服务器成对的使用,一个作为server端…

    2022年4月18日
    979
  • 记录关于我与SCOM的事情

    记录关于我与SCOM的事情

    2022年3月13日
    38
  • 使用Intellij Idea打包java为可执行jar包

    使用Intellij Idea打包java为可执行jar包自己在实际工作中的需要,使用Idea打包项目为可执行的jar包,网上找了好多文章但总是不成功,多次尝试后终于跑通,所以记录下来,希望可以帮助各位步骤:1.选中Java项目工程名称,在菜单中选择 File->projectstructure… (快捷键Ctrl+Alt+Shift+S)。2.在弹出的窗口中左侧选中”Artifacts”,点击”+”选择ja

    2022年6月17日
    51
  • 七、分发脚本xsync报错

    七、分发脚本xsync报错一、报错问题Badownerorpermissionson/home/pcz/.ssh/configBadownerorpermissionson/home/pcz/.ssh/configrsync:connectionunexpectedlyclosed(0bytesreceivedsofar)[sender]rsyncerror:unexplainederror(code255)atio.c(226)[sender=3.1.2]Badow

    2022年5月5日
    48
  • 将十进制小数转化为二进制小数的方法[通俗易懂]

    将十进制小数转化为二进制小数的方法[通俗易懂]十进制小数→二进制小数:(1)把十进制小数乘以2,得到积,把积的整数部分提出;(2)再用所得积的小数部分乘以2,得到积,把积的整数部分提出;(3)重复步骤2;(4)乘以2过程中提出的各个整数部分组成转换后的二进制小数。权的确定规则:最先提出的整数是二进制小数的最高位。看个例子就明白le:37.8125(十进制)的运算分为整数部分和小数部分:  整数部分的结…

    2022年9月24日
    4
  • 成功解决Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX AVX2「建议收藏」

    成功解决Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX AVX2「建议收藏」解决问题在导入tensorflow后,进行运算时,出现了红色错误!importtensorflowastfimportnumpyasnp资料参考AdvancedVectorExtensions(AVX,alsoknownasSandyBridgeNewExtensions)先进的矢量扩展(AVX,也称为桑迪桥新的扩展)是从英特尔和英特…

    2022年5月7日
    50

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号