none
ScrollBars.Verticalの時のDataGridViewの動きについて RRS feed

  • 質問

  • 以下の手順でDataGridView.HorizontalScrollingOffsetが0になってしまいます。

     

    1.DataGridView.ScrollBars を ScrollBars.Verticalに設定する。

    2.横スクロールできる程度の列を追加してDataGridViewを表示する。

    3.DataGridViewの選択セルを一番右端にして右端のセルを表示する。

    4.カラムヘッダの幅を変更する

    5.DataGridView.HorizontalScrollingOffsetが0になり左端までスクロールされてしまう。

    ※手順1を行わない(ScrollBars.Bothのまま)と現象は再現しません。

    ※手順4でカラムヘッダをクリックしてソートしても同様の現象が発生します。

     

    原因が分からないので、DataGridViewを継承し以下の様に位置を復元させることで回避しているのですが、なんだか無理やりな感じがしています。

    原因が分かれば他の対処方法も考えられるので、原因について何か考えられる事があれば教えて頂けないでしょうか。

     

        protected override void OnColumnWidthChanged( DataGridViewColumnEventArgs e )
        {
          int a = this.HorizontalScrollingOffset;
          base.OnColumnWidthChanged( e );
          this.HorizontalScrollingOffset = a;
        }
    
        protected override void OnColumnHeaderMouseClick( DataGridViewCellMouseEventArgs e )
        {
          int a = this.HorizontalScrollingOffset;
          base.OnColumnHeaderMouseClick( e );
          this.HorizontalScrollingOffset = a;
        }
    

     

     

     

    2011年5月27日 4:58

回答

すべての返信