首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# Datagridview编辑单元格

C# Datagridview编辑单元格
EN

Stack Overflow用户
提问于 2011-04-04 04:59:25
回答 2查看 5.2K关注 0票数 1

我试图将光标和焦点放在最后一行和一个特定的单元格中,该单元格的列名为'CheckNumber‘。我以为我受够了:

代码语言:javascript
复制
  var c = dataGridView1.RowCount;
  DataGridViewCell cell = dataGridView1.Rows[c-1].Cells[0];
  dataGridView1.CurrentCell = cell;
  dataGridView1.BeginEdit(true); 

但它总是出现这样的错误:

索引-1没有值。

谁能给我指个方向!?这快把我逼疯了。

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-08 09:22:50

好的,我要在开始之前说,我不能重现你所遇到的问题。但是,您提到错误实际上发生在dataGridView1.CurrentCell = cell;,这应该已经排除了索引错误。

此外,您说得到的错误是索引,这意味着即使您有正确的索引,cell仍然会显示为Index -1 does not have a value. -1。这意味着该单元不存在,或者正在发生其他粗略的事情。既然你听起来像是已经干了一段时间了,我就假设这个细胞确实存在。

由于错误似乎不在你发布的4行代码中的任何一行,我会说看看其他地方,就像你第一次将源代码绑定到datagridview时一样。

更新:我只是找到了一些与此相关的链接。因为我不知道你是如何绑定你的datagridview的,我真的不知道这些是否适用,但是如果有的话,请让我们知道!在任何情况下,它似乎都可以应用于绑定。

来自:SO Question 1

如果最初绑定的空集合不通知DGV更改(例如,集合不通知DGV,但BindingList通知),初始当前行偏移量将正确设置为-1 (因为它是空的)。

当您随后将对象添加到数据绑定集合时,它们仍将正确地显示在网格上,但CurrencyManager不会被告知任何更改,并且当前行偏移将顽固地保持为-1。

因此,当您尝试编辑一行时,CurrencyManager认为您正在尝试编辑偏移量为-1的行,并抛出异常。

为了解决这个问题,您需要在与行交互之前重新绑定,或者最初绑定一个Collection等,当它包含一个或多个项时。

SO Question 2

.NET Monster Question

票数 2
EN

Stack Overflow用户

发布于 2011-04-04 06:09:41

首先检查行数,以确保在没有任何行时不会尝试访问负数的行数。

代码语言:javascript
复制
var c = dataGridView1.RowCount;

if(c>0){  
  DataGridViewCell cell = dataGridView1.Rows[c-1].Cells[0];
  dataGridView1.CurrentCell = cell;
  dataGridView1.BeginEdit(true); 
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5532477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档