我有一个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;
答案 0 :(得分:1)
我有同样的问题,发现当我在代码中设置DataGridView的滚动条属性而不是设计器时,它工作得很好。所以我只是沿着这些方向做了一些事情:
foreach(Listitem item in list)
{
//populate grid
}
dataGridView.ScrollBars = ScrollBars.Both;
不知道为什么它有效:)