我的问题是我在面板中有一个面板。在里面我将AutoScroll
属性设置为true。当我打开一个新窗口时,这个面板滚动开始。
我这样做,我在打开新窗口之前保存位置,然后在关闭它之后设置它。它有效,但它跳到开头然后回到我的位置。
答案 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;
}
}
在油漆上它被设置,但是如果你看起来一切都被移动片刻。我需要阻止此滚动开始,或阻止绘画,并在滚动到当前位置后重新绘制。