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当面板的某个部分需要重新绘制时,再次重新绘制。在表格加载期间或表格可见之前发生的其他事件中指定位置。