Перекрасить панель - PullRequest
3 голосов
/ 15 июля 2009

Моя проблема в том, что у меня есть панель в панели. Внутри у меня свойство AutoScroll установлено в true. Когда я открываю новое окно, эта панель прокручивается до начала.

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

Ответы [ 3 ]

5 голосов
/ 15 июля 2009

Свойство AutoScrollPosition немного забавно. Когда вы прочитаете его, он вернет текущее смещение прокрутки, но при назначении вам нужно будет инвертировать значения:

private static Point GetAutoScrollPosition(Panel panel)
{
    return panel.AutoScrollPosition;
}

private static void SetAutoScrollPosition(Panel panel, Point position)
{
    panel.AutoScrollPosition = new Point(-position.X, -position.Y);
}

Теперь вы можете получить текущую позицию и установить ее так:

Point pos = GetAutoScrollPosition(myPanel);
SetAutoScrollPosition(myPanel, pos);
0 голосов
/ 15 июля 2009

Я делаю что-то вроде Ты написал

_scrollPozition = - (pnlMain.AutoScrollPosition.Y); Результат DialogResult = MessageBox.Show ("Удалить:", MessageBoxButtons.YesNo); dgvClendar.Focus ();

private void pnlMain_Paint (отправитель объекта, PaintEventArgs e) {

        if (pnlMain.AutoScrollPosition.Y == 0)
        {
            pnlMain.AutoScrollPosition = new Point(0, _scrollPozition);
            _scrollPozition = 0;
        }
    }

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

0 голосов
/ 15 июля 2009

Вы пробовали установить autoscroll в false?

...