【发布时间】:2010-11-10 23:58:48
【问题描述】:
我的问题是面板中有一个面板。在里面我将AutoScroll 属性设置为true。当我打开一个新窗口时,此面板将滚动到开始。
我这样做,我在打开新窗口之前保存位置,并在关闭它之后设置它。它有效,但它跳到开头,然后回到我的位置。
【问题讨论】:
-
网络表单? aps.net?你能发布一些代码来更好地解释它吗?
-
我在这里怀疑 WinForms。
我的问题是面板中有一个面板。在里面我将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();
private void pnlMain_Paint(对象发送者,PaintEventArgs e) {
if (pnlMain.AutoScrollPosition.Y == 0)
{
pnlMain.AutoScrollPosition = new Point(0, _scrollPozition);
_scrollPozition = 0;
}
}
在油漆上它是固定的,但是如果你看一下,一切都会被移动。我需要阻止此滚动开始,或阻止绘画,并在滚动到当前位置后重新绘画。
【讨论】: