C#DataGridView单元格单击返回上一个索引

C#DataGridView单元格单击返回上一个索引,c#,datagridview,C#,Datagridview,我有以下代码: private void dgv_Checks_CellClick(object sender, DataGridViewCellEventArgs e) { DoThis(); if (e.RowIndex < 0) return; if (dgv_Checks.CurrentCell.OwningColumn.Name == "CopyBalance") dgv_Checks.Rows[e.RowIndex].Cells["CheckAmou

我有以下代码:

private void dgv_Checks_CellClick(object sender, DataGridViewCellEventArgs e)
{
  DoThis();

  if (e.RowIndex < 0)
  return;

  if (dgv_Checks.CurrentCell.OwningColumn.Name == "CopyBalance")
    dgv_Checks.Rows[e.RowIndex].Cells["CheckAmountColumn"].Value = dgv_Checks.Rows[e.RowIndex].Cells["AccountBalanceColumn"].Value;


  // ****** THIS IS WHERE I AM HAVING ISSUES ******
  if (e.RowIndex > -1 && dgv_Checks.Columns[e.ColumnIndex].Name == "SearchColumn")
  {
    var acctno = dgv_Checks.Rows[e.RowIndex].Cells["AccountNumberColumn"].Value.ToString().Trim();
    if (acctno.Length == 7)
    {
      var acctname = GetAccountName(acctno);
      if (acctname.Trim().Length > 0)
      {
        dgv_Checks.Rows[e.RowIndex].Cells["NameColumn"].Value = acctname;
        dgv_Checks.Rows[e.RowIndex].Cells["AccountBalanceColumn"].Value = GetAccountBalance(acctno);
      }
      else
      {
        AccountSearchScreen(dgv_Checks.CurrentRow);
      }
    }
    else
    {
      AccountSearchScreen(dgv_Checks.CurrentRow);
    }

  }
    dgv_Checks.Rows[e.RowIndex].Cells["CheckAmountColumn"].Value = dgv_Checks.Rows[e.RowIndex].Cells["AccountBalanceColumn"].Value;

}
private void dgv\u Checks\u CellClick(对象发送方,DataGridViewCellEventArgs e)
{
DoThis();
如果(e.RowIndex<0)
返回;
if(dgv_Checks.CurrentCell.OwningColumn.Name==“CopyBalance”)
dgv_检查。行[e.RowIndex]。单元格[“CheckAmountColumn”]。值=dgv_检查。行[e.RowIndex]。单元格[“AccountBalanceColumn”]。值;
//*******这就是我遇到问题的地方******
如果(e.RowIndex>-1&&dgv_检查.Columns[e.ColumnIndex].Name==“SearchColumn”)
{
var acctno=dgv_Checks.Rows[e.RowIndex].Cells[“AccountNumberColumn”].Value.ToString().Trim();
如果(acctno.Length==7)
{
var acctname=GetAccountName(acctno);
如果(acctname.Trim().Length>0)
{
dgv_检查。行[e.RowIndex]。单元格[“NameColumn]”。值=acctname;
dgv_Checks.Rows[e.RowIndex]。单元格[“AccountBalanceColumn”]。值=GetAccountBalance(acctno);
}
其他的
{
AccountSearchScreen(dgv_Checks.CurrentRow);
}
}
其他的
{
AccountSearchScreen(dgv_Checks.CurrentRow);
}
}
dgv_检查。行[e.RowIndex]。单元格[“CheckAmountColumn”]。值=dgv_检查。行[e.RowIndex]。单元格[“AccountBalanceColumn”]。值;
}
当它到达这条线时:

if(e.RowIndex>-1&&dgv_检查.Columns[e.ColumnIndex].Name==“SearchColumn”)

我正在返回上一个单元格的索引,因此我总是落后一点。我是否使用了正确的事件?我只想捕获一个按钮点击,并且只在“搜索列”中捕获一个


像往常一样感谢。

如果我没记错的话,它与处理程序代码无关,与其他页面事件、母版页、验证等有关。有东西在.net framework中的某个地方劫持了您的请求,导致请求延迟,但我记不起在哪里

把gridview和数据源放在一个没有母版页或其他混杂因素的单独文件中,看看问题是否消失了

如果它现在工作正常,可以从原始页面添加组件,直到可以再次复制问题,或者返回到原始页面并逐步完成它所做的一切。这件事在我身上至少发生过两次,我所能记得的是,这件事似乎完全无关


我不仅提供了一个毫无用处的答案,而且还再次证明了为什么我真的应该记录这些废话…

看起来你做的一切都是对的。没有道理为什么你会得到上一个单元格索引。很小的一件事,但是你得到的是上一次单击的行和列索引,还是仅仅是行索引?@Kendrick-两者都不正确。它将返回我之前单击的单元格。如果单击第[0]行。单元格[0],然后单击第[3]行。单元格[4]将返回第[0]行。单元格[0]第一次单击时是否触发事件?我似乎记得以前发生过这种情况,但我一辈子都记不起是什么原因造成的/我是如何修复的。我正在试着唤起我的记忆,但到目前为止没有运气…第一次点击就可以了。第二次点击模仿了第一次点击,所以我甚至在屏幕上评论了所有的东西,但是这个甚至,它仍然做同样的事情。在这一点上,事件中唯一的事情就是这张支票。。。也许它能按预期工作?o、 o