我在vs2008中有一个包含DataGridView的winform。 datagrid包含一个包含多个列的列表。这些都是固定的宽度,除了我设置的任何一个空间,并填充视图的宽度。 winform可以向各个方向调整大小。
我想解决的问题是,当我增加窗口的垂直尺寸时,滚动条会消失,列会向右捕捉以填充额外的空间。我想要发生的是垂直scrollBar永远不会消失。在DataGridView的属性中将ScrollBars设置为vertical是不会这样做的。
这有可能实现吗?如果是这样,我如何让垂直滚动条始终可见?
答案 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)
一种可能性是在滚动条消失时触发事件,以便您可以阻止并停止该事件。