c#中索引超出范围.必须为非负值并小于集合大小. 参数名: index

求帮忙实在是有点不懂了... 求帮忙实在是有点不懂了 展开
 我来答
帐号已注销
2020-02-13 · TA获得超过77万个赞
知道小有建树答主
回答量:4168
采纳率:93%
帮助的人:164万
展开全部

这个异常在代码不规范的情况下很容易出现,数组是有索引的, 如 int[] array = new int[] {1,2,3,} ;
代码写一个int result = arra[4];肯定就超出索引范围。

ArrayList list = new ArrayList();

string str = "123";

 for(int i=0; i<3; i++)

 {

  // 必须添加到集合,然后才能通过list[i]使用集合元素

list.Add(str.Substring(i, 1));

Console.WriteLine(list[i]);

}

扩展资料:

当现有数据中存在重复的键值时,大多数数据库不允许将新创建的唯一索引与表一起保存。数据库还可能防止添加将在表中创建重复键值的新数据。例如,如果在 employee 表中职员的姓 (lname) 上创建了唯一索引,则任何两个员工都不能同姓。

对某个列建立UNIQUE索引后,插入新记录时,数据库管理系统会自动检查新纪录在该列上是否取了重复值,在CREATE TABLE 命令中的UNIQE约束将隐式创建UNIQUE索引。

参考资料来源:百度百科-索引

376710727
推荐于2017-12-16 · TA获得超过8937个赞
知道大有可为答主
回答量:2593
采纳率:100%
帮助的人:1266万
展开全部
这个异常在代码不规范的情况下很容易出现,
数组是有索引的, 如 int[] array = new int[] {1,2,3,} ;
你代码写一个int result = arra[4];他肯定就超出索引范围了。

你给的代码并不能准确的判断出来异常具体的发生原因, 因为这个明显是WINFORM的后台代码, 前端的控件、使用数据类型你都没给。

但是凭经验,我猜测你的dgvUserManager是个前端的DataGridView控件,
这个方法是个单元格点击触发的方法,
那么最有可能的情况,就是你的DataGrid有一个自动生成下一行的属性,你没有设置成False。
比如你本来的数据源List<T>有10行, 你绑定给DataGrid了,但是实际前端会生成11行,
第11行是留白的,可以让用户添加, 这也是DataGrid的特性。

但是如果你点击了第11行,也就是自动生成的这个空行。在后台反过来获取用户点击的这个单元格的值, e.RowIndex肯定是11, 因此, List<T>[11]这一行是不存在的,他一共就10行, 所以就会报超出索引的异常了。

winform我不是很了解,WPF中,DataGrid的AutoGenerateRow属性是控制是否自动生成下一行的, Winform应该差不多一样,你找一下, 如果是需要自动生成,那么你后台就要加入判断, 用户是点击的已有数据,还是要新增一行数据
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式