私の問題は、パネルにパネルがあることです。内部では、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();
private void pnlMain_Paint(オブジェクト送信者, PaintEventArgs e) {
if (pnlMain.AutoScrollPosition.Y == 0)
{
pnlMain.AutoScrollPosition = new Point(0, _scrollPozition);
_scrollPozition = 0;
}
}
ペイント上では設定されていますが、見るとすべてが一瞬動いています。このスクロールをブロックして開始するか、ペイントをブロックし、スクロール後に現在の位置に再ペイントする必要があります。