我试图将光标和焦点放在最后一行和一个特定的单元格中,该单元格的列名为'CheckNumber‘。我以为我受够了:
var c = dataGridView1.RowCount;
DataGridViewCell cell = dataGridView1.Rows[c-1].Cells[0];
dataGridView1.CurrentCell = cell;
dataGridView1.BeginEdit(true); 但它总是出现这样的错误:
索引-1没有值。
谁能给我指个方向!?这快把我逼疯了。
谢谢!
发布于 2011-04-08 09:22:50
好的,我要在开始之前说,我不能重现你所遇到的问题。但是,您提到错误实际上发生在dataGridView1.CurrentCell = cell;,这应该已经排除了索引错误。
此外,您说得到的错误是索引,这意味着即使您有正确的索引,cell仍然会显示为Index -1 does not have a value. -1。这意味着该单元不存在,或者正在发生其他粗略的事情。既然你听起来像是已经干了一段时间了,我就假设这个细胞确实存在。
由于错误似乎不在你发布的4行代码中的任何一行,我会说看看其他地方,就像你第一次将源代码绑定到datagridview时一样。
更新:我只是找到了一些与此相关的链接。因为我不知道你是如何绑定你的datagridview的,我真的不知道这些是否适用,但是如果有的话,请让我们知道!在任何情况下,它似乎都可以应用于绑定。
如果最初绑定的空集合不通知DGV更改(例如,集合不通知DGV,但BindingList通知),初始当前行偏移量将正确设置为-1 (因为它是空的)。
当您随后将对象添加到数据绑定集合时,它们仍将正确地显示在网格上,但CurrencyManager不会被告知任何更改,并且当前行偏移将顽固地保持为-1。
因此,当您尝试编辑一行时,CurrencyManager认为您正在尝试编辑偏移量为-1的行,并抛出异常。
为了解决这个问题,您需要在与行交互之前重新绑定,或者最初绑定一个Collection等,当它包含一个或多个项时。
.NET Monster Question
发布于 2011-04-04 06:09:41
首先检查行数,以确保在没有任何行时不会尝试访问负数的行数。
var c = dataGridView1.RowCount;
if(c>0){
DataGridViewCell cell = dataGridView1.Rows[c-1].Cells[0];
dataGridView1.CurrentCell = cell;
dataGridView1.BeginEdit(true);
}https://stackoverflow.com/questions/5532477
复制相似问题