2009-01-23 120 views
1

我在vs2008中有一个包含DataGridView的winform。 datagrid包含一个包含多列的列表。这些都是固定的宽度,不过我已经设置了一个宽度,以便占用剩下的空间并填充视图的宽度。 winform可以在各个方向调整大小。DataGridView中的滚动条

我想解决的问题是,当我增加窗口的垂直尺寸时,滚动条消失,列向右对齐填充额外空间。我想发生的事情是垂直滚动条从不消失。在DataGridView的属性中将ScrollBars设置为垂直不会执行此操作。

这是完全可能实现的吗?而且,如果是这样,我如何让垂直滚动条始终可见?

回答

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; 
     } 
    } 
+0

好的...所以我明白你在做什么,但我已经尝试在DataGridView中设置可见的滚动条。为什么这应该使其行为有所不同? – Sakkle 2009-01-23 13:16:13

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