我的问题是我在面板中有一个面板。在里面我将AutoScroll
属性设置为true。当我打开一个新窗口时,此面板将滚动到开始。
我这样做,我在打开新窗口之前保存位置,并在关闭它后设置它。它有效,但它跳到开头然后回到我的位置。
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();
私人无效pnlMain_Paint(对象发送者,PaintEventArgs e){
if (pnlMain.AutoScrollPosition.Y == 0)
{
pnlMain.AutoScrollPosition = new Point(0, _scrollPozition);
_scrollPozition = 0;
}
}
在油漆上它是固定的,但如果你看的话,一切都被移动了一会儿。我需要阻止此滚动开始,或阻止绘画,并在滚动到当前位置后重新绘画。
你试过设置autoscroll
吗false
?