Мне известны два способа, один основан на вычислении количества отображаемых строк, другой в использовании свойства Selected (для DataGridView) или SelectedIndex (для ListBox).
[Прокрутка вниз ListBox]
Способ на основе вычисления количества отображаемых строк:
void ПрокрутитьВниз(ListBox lb)
{
int visibleItems = lb.ClientSize.Height / lb.ItemHeight;
lb.TopIndex = Math.Max(lb.Items.Count - visibleItems + 1, 0);
}
Более простой способ, основанный на программном выделении последней строки:
void ПрокрутитьВниз(ListBox lb)
{
lb.SelectedIndex = lb.Items.Count - 1;
}
[Прокрутка вниз DataGridView]
Способ на основе вычисления количества отображаемых строк:
void ПрокрутитьВниз(DataGridView dgv)
{
int visibleItems = (dgv.ClientSize.Height - dgv.ColumnHeadersHeight) / dgv.Rows[0].Height;
dgv.FirstDisplayedScrollingRowIndex =
Math.Max(dgv.Rows.Count - visibleItems + 1, 0);
}
Более простой способ, основанный на программном выделении последней строки:
void ПрокрутитьВниз(DataGridView dgv)
{
dgv.CurrentCell = dgv.Rows[dgv.Rows.Count-1].Cells[0];
dgv.CurrentCell.Selected = false;
}
[Ссылки]
1. Visual Studio C#: часто задаваемые вопросы (FAQ). 2. Управление выбором и копированием строк ListBox. |