スクロールバーが勝手に戻る

フォーカスが移動するとAutoScroll==trueのパネルのスクロールバーが勝手に戻ってしまう現象だが、下記の様にしたら解決した。

private object preScrollPos = null;
private void pic_LocationChanged(object sender, EventArgs e)
{
  if (preScrollPos != null)
  {
    AutoScrollPosition = (Point)preScrollPos;
    preScrollPos = null;
  }
}
private void pic_MouseEnter(object sender, EventArgs e)
{
  preScrollPos = new Point(Math.Abs(AutoScrollPosition.X), Math.Abs(AutoScrollPosition.Y));
}