首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# DataGridView专注于最后一条记录

C# DataGridView专注于最后一条记录
EN

Stack Overflow用户
提问于 2011-04-22 05:28:58
回答 2查看 14.6K关注 0票数 1

我有一个DataGridView,我从一个模拟键盘的设备上扫描支票。

当键盘预览打开并且我在等待输入时,用户不能输入任何东西,否则它会被我的方法抓取,以读取由支票阅读器输入的内容。所有这些都运行得很好。

扫描之后,我将在datagridview中添加一行,并将其放在末尾。

如何让datagridview在每次添加后滚动到底部?我最终得到了几百张支票,它在最上面。所以,每次他们扫描的时候,他们都不知道扫描了什么。

这是我创建行的方法:

代码语言:javascript
复制
private void Timer1Tick(object sender, EventArgs e)
{
  _secondswaited += 1;
  if (_secondswaited == SecondsToWait)
  {
    timer1.Enabled = false;

    var psc = new ParseScannedCheckNumbers();
    if (psc.ParseCheck(_checkData))
    {
      label_Status.Text = @"Scan Next Check";

      var ct = checkTrans.IndividualCheck.NewIndividualCheckRow();
      ct.Date = DateTime.Now.ToShortDateString();
      ct.AccountNumber = GetAccountNumber(psc.BankAccountNumber);
      ct.Name = GetAccountName(ct.AccountNumber);
      ct.AccountBalance = GetAccountBalance(ct.AccountNumber);
      //ct.CheckAmount = 0;
      ct.BankRoutingNumber = psc.BankRoutingNumber;
      ct.BankAccountNumber = psc.BankAccountNumber;
      ct.CheckNumber = psc.CheckNumber;
      ct.Status = "Entered";
      checkTrans.IndividualCheck.Rows.Add(ct);
      var dgvcount = dgv_Checks.Rows.Count;
      **dgv_Checks.Rows[dgvcount - 1].Selected = true;**       
    }
    else
    {
      label_Status.Text = @"Scan failed. Rescan check.";
    }
    _checkData = string.Empty;
    _secondswaited = 0;

    var rs = new Registry.RegistrySettings();
    if (!rs.ScanChecksContinuous)
    {
      StopScanning();
      label_Status.Text = @"Success!";
      EditLastRowEntered();
    }

    label_ChecksScanned.Text = (dgv_Checks.RowCount - 1).ToString();
  }
}

粗体部分是我试图移动到最后一行的地方,但没有成功。

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-22 05:48:40

我会使用DataGridView.CurrentCell属性。在您遇到问题的代码行中尝试以下代码:

代码语言:javascript
复制
dgv_Checks.CurrentCell = dgv_Checks.Rows[dgvcount - 1].Cells[0];
票数 11
EN

Stack Overflow用户

发布于 2011-04-22 05:53:39

我认为您需要做的是检查Row是否正在显示。然后

将粗体显示的行替换为

代码语言:javascript
复制
if(dgv_Checks.Rows[dgvcount - 1].Displayed == false)
{

dgv_Checks.FirstDisplayedScrollingRowIndex = dgvcount - 1;

}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5749983

复制
相关文章

相似问题

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