katela Ответов: 2

Как автоматически прокрутить вниз окно datagridview с помощью C#?


Привет ребята,

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

Количество строк может измениться, так как есть еще одно отдельное приложение, операторы которого могут обновлять информацию в базе данных. Таким образом, количество строк может быть любым от 20 до 100 или даже больше, но мой публичный экран (я использую datagridview для отображения данных) должен отображать только 20 строк одновременно. что мне нужно сделать, так это найти способ, если в datagrid есть более 20 строк, чтобы сетка автоматически прокручивалась вниз (плавно) при замораживании строки заголовка, а не перепрыгивала с одной строки на другую и, возможно, возвращалась назад или начинала снова сверху. Так же как и в этой статье: Автоматическая прокрутка Rich / Textbox[^]

Другой метод также может быть использован до тех пор, пока прокрутка будет плавной. Я использую windows forms, но решение WPF также приветствуется. База данных-это SQL.

В значительной степени система должна циклически перемещаться сверху вниз списка, медленно и плавно останавливаясь в верхней части. Большинство решений, которые я нашел, прыгают прямо в нижний ряд.

Я понятия не имею, возможно ли это, поэтому подумал, что спрошу?
Большое вам спасибо за любую любезную помощь.

Что я уже пробовал:

Я попытался использовать datagridview current selected index, чем увеличивать его на единицу, но это явно не мое желаемое решение.
Я видел на форуме несколько предложений по увеличению datagridview FirstDisplayedScrollingRowIndex, но и здесь ему повезет с плавностью.
Некоторые предлагали использовать панель и прокручивать эту панель, как этого можно достичь?

2 Ответов

Рейтинг:
2

#realJSOP

private static void EnsureVisibleRow(DataGridView view, int rowToShow)
{
    if (rowToShow >= 0 && rowToShow < view.RowCount)
    {
        var countVisible = view.DisplayedRowCount(false);
        var firstVisible = view.FirstDisplayedScrollingRowIndex;
        if (rowToShow < firstVisible)
        {
            view.FirstDisplayedScrollingRowIndex = rowToShow;
        }
        else if (rowToShow >= firstVisible + countVisible)
        {
            view.FirstDisplayedScrollingRowIndex = rowToShow - countVisible + 1;
        }
    }
}


Однако при этом имейте в виду, что добавление новых строк и попытка сохранить последнюю добавленную строку видимой будет мешать пользователю перемещаться по элементу управления.

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


Рейтинг:
0

katela

Datagridview будет обновлен только для добавления новых данных после того, как он прокрутился сверху до последней строки, а затем обратно наверх.