重绘面板

时间:2009-07-15 12:47:44

标签: c# winforms scroll panel

我的问题是我在面板中有一个面板。在里面我将AutoScroll属性设置为true。当我打开一个新窗口时,这个面板滚动开始。

我这样做,我在打开新窗口之前保存位置,然后在关闭它之后设置它。它有效,但它跳到开头然后回到我的位置。

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:0)

您是否尝试过将autoscroll设为false

答案 2 :(得分:0)

我喜欢你写的东西

_scrollPozition = - (pnlMain.AutoScrollPosition.Y); DialogResult result = MessageBox.Show(“Delete:”,MessageBoxButtons.YesNo); dgvClendar.Focus();

private void pnlMain_Paint(object sender,PaintEventArgs e)         {

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

在油漆上它被设置,但是如果你看起来一切都被移动片刻。我需要阻止此滚动开始,或阻止绘画,并在滚动到当前位置后重新绘制。