2011-06-30 66 views
1

我有一個Windows窗體DataGridView。我使用下面的代碼填充和更新,都非常簡單,並且全部都是在UI線程上完成的。Odd DataGridView垂直滾動行爲

由於一些奇怪的原因,有時垂直滾動條的大小(我設置爲僅在需要時纔可見)並不反映可用的行數。如果我一直向下滾動,我仍然看不到最後一排。我可以通過使用下箭頭鍵選擇下面的行(並將它們放入視圖中)來判斷。

這可能是什麼原因。我需要某種開始日期SuspendLayout什麼?該控件通過interop在MFC應用程序中嵌入。

Andy的想法如何找出這個問題?這是一個已知的錯誤? Google似乎並不這麼認爲。

這是我使用的代碼。

添加或插入一個行:

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

我有同樣的問題,並發現,當我在代碼中設置的DataGridView的滾動條屬性,而不是設計師,它的工作就好了。所以我只是有幾行內容:

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

不知道爲什麼但是它的工作:)