奇数DataGridView垂直滚动行为

时间:2011-06-30 18:42:21

标签: winforms datagridview

我有一个Windows窗体DataGridView。我使用下面的代码填充和更新,都非常简单,它都是在UI线程上完成的。

由于一些奇怪的原因,有时垂直滚动条的大小(我设置为仅在需要时可见)并不反映可用的行数。如果我一直向下滚动,我仍然看不到最后一行。我可以通过使用向下箭头键选择下面的行(并将它们带入视图)来判断。

这可能是什么原因。我是否需要某种 BeginUdate SuspendLayout 或其他什么?控件通过互操作嵌入在MFC应用程序中。

安迪想知道如何追查这个问题?这是一个已知的错误?谷歌似乎不这么认为。

这是我使用的代码。

添加或插入行:

int newRowIndex = insertAt;
if (insertAt < 0 || insertAt > this.dataGridView.Rows.Count)
{
    newRowIndex = this.dataGridView.Rows.Add();
}
else
{
    this.dataGridView.Rows.Insert(insertAt, 1);
}

删除一行:

this.dataGridView.Rows.Remove(index);

结算:

this.dataGridView.Rows.Clear();

更新一行:

this.dataGrid[0, rowIndex].Value = someString;
this.dataGrid[1, rowIndex].Value = someBool;
this.dataGrid[2, rowIndex].Value = someInt;

1 个答案:

答案 0 :(得分:1)

我有同样的问题,发现当我在代码中设置DataGridView的滚动条属性而不是设计器时,它工作得很好。所以我只是沿着这些方向做了一些事情:

foreach(Listitem item in list)
{
  //populate grid
}
dataGridView.ScrollBars = ScrollBars.Both;

不知道为什么它有效:)