C # DataGridView Сосредоточиться на последней записи - PullRequest
1 голос
/ 22 апреля 2011

У меня есть DataGridView, где я проверяю чеки с устройства, эмулируемого клавиатурой.

Пока включена функция предварительного просмотра ключей и я жду ввода, пользователь не может ничего ввести, иначе он захватил мой метод дляпрочитайте ввод от читателя проверки.Все это работает нормально.

После сканирования я добавляю в таблицу данных строку, которая ставится в конце.

Как сделать прокрутку таблицы данных вниз послекаждый добавить?Я получаю несколько сотен чеков, и это наверху.Таким образом, каждый раз, когда они сканируют, они понятия не имеют, что было отсканировано.

Это мой метод, который создает строку:

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();
  }
}

Часть, которая выделена жирным шрифтом, - это место, где я пыталсяперейти к последнему ряду, но безуспешно.

Спасибо!

Ответы [ 2 ]

11 голосов
/ 22 апреля 2011

Я бы использовал свойство DataGridView.CurrentCell . Попробуйте вместо строки, с которой у вас проблемы:

dgv_Checks.CurrentCell = dgv_Checks.Rows[dgvcount - 1].Cells[0];
4 голосов
/ 22 апреля 2011

Я думаю, вам нужно проверить, отображается ли строка. а затем

заменить строку жирным шрифтом на

if(dgv_Checks.Rows[dgvcount - 1].Displayed == false)
{

dgv_Checks.FirstDisplayedScrollingRowIndex = dgvcount - 1;

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...