1

DataGridView を含む vs2008 に winform があります。データグリッドには、複数の列を持つリストが含まれています。これらは固定幅ですが、残っているスペースをすべて取り、ビューの幅を埋めるように設定したものを除きます。winform はあらゆる方向にサイズ変更可能です。

私が解決しようとしている問題は、ウィンドウの垂直サイズを大きくすると、スクロールバーが消え、列が右にスナップして余分なスペースを埋めることです。私がしたいのは、垂直スクロールバーが消えないことです。DataGridView のプロパティで ScrollBars を垂直に設定しても、これは行われません。

これを達成することはまったく可能ですか?もしそうなら、垂直スクロールバーを常に表示するにはどうすればよいですか?

4

3 に答える 3

6

DataGridViewをサブクラス化し、VerticalScrollBarのVisibleChangedイベントを処理してみてください。そこで、VisibleプロパティをTrueに設定して、デフォルトの動作をオーバーライドできるはずです。

このようなものだと思います...

public class SubclassedDataGridView : DataGridView
    {
        public SubclassedDataGridView (): base()
        {
            VerticalScrollBar.VisibleChanged += new EventHandler(VerticalScrollBar_VisibleChanged);
        }

        void VerticalScrollBar_VisibleChanged(object sender, EventArgs e)
        {
            VerticalScrollBar.Visible = true;
        }
     }
于 2009-01-23T13:10:56.853 に答える
1

私の場合、グリッドを (再) ソートすることが役に立ちました。次のように sth を試してください。

 if (gridName.SortedColumn == null)
   gridName.Sort(gridNameColumns[columnName],ListSortDirection.Ascending);
 else
 {
    ListSortDirection dir;
    if (gridName.SortOrder == SortOrder.Descending) 
       dir = ListSortDirection.Descending;
    else dir = ListSortDirection.Ascending;

    gridName.Sort(gridName.SortedColumn, dir);
 }
于 2011-12-21T14:19:25.297 に答える