C# 面板重新喷漆

C# 面板重新喷漆,c#,winforms,scroll,panel,C#,Winforms,Scroll,Panel,我的问题是我有一个面板在面板中。在内部,我将AutoScroll属性设置为true。当我打开一个新窗口时,这个面板会滚动到开始 我这样做,在打开新窗口之前保存位置,在关闭窗口之后设置位置。它可以工作,但它会跳转到开始位置,然后返回到我的位置。您是否尝试将autoscroll设置为false?AutoScrollPosition属性有点滑稽。当您读取它时,它将返回当前滚动偏移量,但当您指定它时,您需要反转值: private static Point GetAutoScrollPosition(P

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


我这样做,在打开新窗口之前保存位置,在关闭窗口之后设置位置。它可以工作,但它会跳转到开始位置,然后返回到我的位置。

您是否尝试将
autoscroll
设置为
false

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

我做了一些你写的事情

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

私有void pnlMain_Paint(对象发送器,PaintEventArgs e) {

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

在绘制时,它已设置,但如果您看到所有内容都被移动了一会儿。我需要阻止此滚动开始,或阻止绘制,然后在滚动到当前位置后重新绘制。

WebForms?aps.net?您是否可以发布一些代码来更好地解释它?我怀疑这里有WinForms。您不希望在绘制事件中执行此操作;它被反复引发r当面板的某个部分需要重新绘制时,再次重新绘制。在表格加载期间或表格可见之前发生的其他事件中指定位置。