DataGridView中的ScrollBar

时间:2009-01-23 11:09:41

标签: .net visual-studio winforms datagridview scrollbar

我在vs2008中有一个包含DataGridView的winform。 datagrid包含一个包含多个列的列表。这些都是固定的宽度,除了我设置的任何一个空间,并填充视图的宽度。 winform可以向各个方向调整大小。

我想解决的问题是,当我增加窗口的垂直尺寸时,滚动条会消失,列会向右捕捉以填充额外的空间。我想要发生的是垂直scrollBar永远不会消失。在DataGridView的属性中将ScrollBars设置为vertical是不会这样做的。

这有可能实现吗?如果是这样,我如何让垂直滚动条始终可见?

3 个答案:

答案 0 :(得分: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;
        }
     }

答案 1 :(得分:1)

就我而言,(重新)排序网格有帮助。试试这样:

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

答案 2 :(得分:0)

一种可能性是在滚动条消失时触发事件,以便您可以阻止并停止该事件。