2009-07-15 11 views
3

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

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

+2

WebForms? aps。ネット?あなたはそれをより良く説明するためにいくつかのコードを投稿できますか? –

+0

私はここでWinFormsを疑っています。 – Noldorin

答えて

0

autoscrollfalseに設定してみましたか?

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); 
0

私はあなたが

_scrollPozition =書いたリク何かを - (pnlMain.AutoScrollPosition.Yを)。 DialogResult result = MessageBox.Show( "Delete:"、MessageBoxButtons.YesNo); dgvClendar.Focus();塗料の

ます。private void pnlMain_Paint(オブジェクト送信者、PaintEventArgsのe)の {

 if (pnlMain.AutoScrollPosition.Y == 0) 
     { 
      pnlMain.AutoScrollPosition = new Point(0, _scrollPozition); 
      _scrollPozition = 0; 
     } 
    } 

それが設定されていますが、見ればすべてが一瞬のために移動されます。私はこのスクロールを開始したり、絵をブロックしたり、スクロール後に現在の位置に塗り直したりするのをブロックする必要があります。

+0

Paintイベントでこれを行うことは望ましくありません。パネルの一部を再描画する必要があるとすぐに何度も何度も何度も上げられます。 Form_Loadの間に位置を割り当てるか、フォームが表示される前に発生する他のイベントを割り当てます。 –

関連する問題