3

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

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

4

3 回答 3

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);
于 2009-07-15T13:13:01.730 回答
0

我做了一些你写的事情

_scrollPozition = -(pnlMain.AutoScrollPosition.Y); DialogResult 结果 = MessageBox.Show("删除:", MessageBoxButtons.YesNo); dgvClendar.Focus();

私人无效pnlMain_Paint(对象发送者,PaintEventArgs e){

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

在油漆上它是固定的,但如果你看的话,一切都被移动了一会儿。我需要阻止此滚动开始,或阻止绘画,并在滚动到当前位置后重新绘画。

于 2009-07-15T14:01:27.990 回答
0

你试过设置autoscrollfalse

于 2009-07-15T12:51:13.660 回答