首页 > Linux操作系统 > Linux操作系统 > C# ListView
今天在使用listView控件的selectedIndexChange事件或者ItemSelectionChanged事件时获得选中的项的值一直出现异常System.ArgumentOutOfRangeException异常,提示{"InvalidArgument=“0”的值对于“index”无效。\r\n参数名: index"},找了好久中已找到问题所在,原来这个事件是当更改选项时触发,但是当更改选项时,首先它要取消原项的选中状态,然后再选中另外一项,这期间会没有选中项了,这样事件处理程序就会出错。所以我们要在事件处理中只要加上一句判断
if (listView1.SelectedItems.Count != 0)关于listView控件的selectedIndexChange事件或者ItemSelectionChanged事件
获得选中的项的值一直出现异常,提示你没有选中项。
这个事件是当更改选项时触发,但是当更改选项时,首先它要取消原项的选中状态,然后再选中另外一项,这期间会没有选中项了,这样事件处理程序就会出错。所以我们要在事件处理中加上一句判断
if (listView1.SelectedItems.Count != 0)
关于listView控件的selectedIndexChange事件或者ItemSelectionChanged事件 获得选中的项的值一直出现异常,提示你没有选中项。 这个事件是当更改选项时触发,但是当更改选项时,首先它要取消原项的选中状态,然后再选中另外一项,这期间会没有选中项了,这样事件处理程序就会出错。所以我们要在事件处理中加上一句判断 if (listView1.SelectedItems.Count != 0) 这样,就OK了。 |
如何判断ListView中的CheckItem项是否选中?并将所以选项从ListView控件中删除?进来看看就知道
其实很简单如下源码段所示得知: foreach (ListViewItem temp_LVI in this.ListView1.CheckedItems)//用foreach()函数遍历 { if (temp_LVI.Checked)//判断是否选中 { this.ListView1.Items.RemoveAt(temp_LVI.Index);//将选中的删除 } } 以上该方法是重复的判断了temp_LVI.Checked.因为CheckedItems本来就是已选中的选的集合. 所以可以把以上的代码简代成以下的代码: foreach (ListViewItem temp_LVI in this.ListView1.CheckedItems)//用foreach()函数遍历 { this.ListView1.Items.RemoveAt(temp_LVI);//将选中的删除 } |
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26221264/viewspace-740937/ ,如需转载,请注明出处,否则将追究法律责任。