3

私の問題は、パネルにパネルがあることです。内部では、AutoScrollプロパティをtrueに設定しています。新しいウィンドウを開くと、このパネルが最初までスクロールされます。

私はそれを行い、新しいウィンドウを開く前に位置を保存し、閉じた後に設定します。それは機能しますが、最初にジャンプしてから自分の位置に戻ります。

4

3 に答える 3

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);
于 2009-07-15T13:13:01.730 に答える
0

私はあなたが書いたようなことをします

_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;
        }
    }

ペイント上では設定されていますが、見るとすべてが一瞬動いています。このスクロールをブロックして開始するか、ペイントをブロックし、スクロール後に現在の位置に再ペイントする必要があります。

于 2009-07-15T14:01:27.990 に答える