设置gridView.FirstDisplayedScrollingRowIndex时,获取“没有空间可用于显示行”

时间:2015-10-29 16:18:06

标签: c# winforms datagridview .net-2.0

gridView.FirstDisplayedScrollingRowIndex = gridView.SelectedRows[0].Index;
爆炸:

  

没有空间可以显示行

DataGridView是未绑定模式下的自定义控件。 datagridview.FirstDisplayedScrollingRowIndex未在特定的基于datagridview的事件中设置。

通过DataSet.EndMerge上的gatagridview.Rows.Add方法将行添加到datagridview中,然后逐行样式化和格式化单元格。清除并恢复上一个选定的行,并将滚动条位置恢复到第一个可见行。

试着找出这个例外的实际含义。

if (gridView.Rows.Count > 0)
{
    gridView.ClearSelection();

    T value = GetItemByRow(gridView.Rows[0]);

    bool isVisible = filter.ShouldShow(value);
    gridView.Rows[0].Selected = true;

    if (!isVisible)
    {
        gridView.Rows[0].Visible = true;
        gridView.FirstDisplayedScrollingRowIndex = gridView.SelectedRows[0].Index; 
        gridView.Rows[0].Visible = false;
    }
    else
    {
        gridView.FirstDisplayedScrollingRowIndex = gridView.SelectedRows[0].Index;
    }
}

2 个答案:

答案 0 :(得分:0)

当网格中存在行但不可见时将其设置为第一行将使其抛出此异常。

答案 1 :(得分:0)

当网格的大小自动设置为0高度(或可能是宽度)时,您进行设置

(e.oldValue !== null) && (e.value !== null)

将引发异常。我们的网格设置了dataGridView.FirstDisplayedScrollingRowIndex = 0; ,在某些情况下,其大小设置为不可见。

我们的解决方法是将MinimumSize设置为100/50,我们再也没有看到异常。即使网格不在窗口内(因此不可见),也不会引发异常。