1


0

DataGridView Sortは、グリッドの水平位置をわずかに再配置します

水平スクロールバーを引き起こす多くの列を持つDataGridViewがあります。 ただし、右端までスクロールして列で並べ替えると、datagridviewの位置がわずかに変更されますが、スクロールバーは右端まで残ります。

この動作を停止し、グリッドを並べ替える前と同じ位置にグリッドを保持し、可能な場合はグリッドで自動並べ替えを引き続き使用したいと思います。

私はこれを見つけましたhttp://social.msdn.microsoft.com/Forums/en-US/winformsdatacontrols/thread/48a5b6a4-d343-463c-8f31-4b5123a56c0a[link]この人は同じ問題を抱えていますが、解決策私は手動ソートを行っていないので、そこには適用できないように提案しました。

何かご意見は?

1 Answer


2


これを次のようにして解決しました。

DataGridView.Scrollイベントをサブスクライブし、ScrollOrientationがHorizo​​ntalである場合、スクロールのNewValueにメンバー変数を設定しています。

次に、DataGridView.Sortedイベントにサブスクライブしました。 このイベントでは、Horizo​​ntalScrollingOffsetをメンバー変数に設定します。

int _horizontalOffsetStop;

private void Grid_Scrolled(object sender, ScrollEventArgs e)
{
     if (e.ScrollOrientation == ScrollOrientation.HorizontalScroll)
     {
          _horizontalOffsetStop = e.NewValue;
     }
}

private void Grid_Sorted(object sender, EventArgs e)
{
     myGrid.HorizontalScrollingOffset = _horizontalOffsetStop;
}