горизонтальная прокрутка похожа на таковую в Excel с использованием DataGridView - PullRequest
0 голосов
/ 16 февраля 2012

Возможно для DataGridView прокручивать в шахматном порядке (аналогично Excel) по горизонтали.

Мне не нужно прокручивать ячейку столбца (непрерывно), вместо этого, когда прокрутка достигает границы ячейки, сетка должна прокручивать следующую ячейку столбца.

Ответы [ 2 ]

1 голос
/ 04 декабря 2012

Вы можете переопределить метод OnScroll и рассчитать следующее смещение

    protected override void OnScroll(ScrollEventArgs e)
    {
        if (e.ScrollOrientation == ScrollOrientation.HorizontalScroll)
        {
            e.NewValue = GetColumnOffset(e.NewValue);;
        }
        base.OnScroll(e);
    }

    private int GetColumnOffset(int offset)
    {
        int start = 0, end = 0;
        foreach (var column in Columns.Cast<DataGridViewColumn>().Where(c=>!c.Frozen))
        {
            end = start + column.Width;
            if (start <= offset && offset < end)
            {
                break;
            }
            start = end;
        }
        return start == offset ? offset : end;
    }
0 голосов
/ 02 марта 2012

Попробуйте использовать свойство FirstDisplayedScrollingColumnIndex. Должно помочь. Если установить FirstDisplayedScrollingColumnIndex, он переходит к началу указанного индекса столбца.

Что-то вроде:

protected override void OnScroll(ScrollEventArgs e) {
    base.OnScroll(e);
    this.FirstDisplayedScrollingColumnIndex = Convert.ToInt32(this.HorizontalScrollBar.Value / this.Width); }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...