2013-05-09 38 views
0

簡要介紹了我的問題的根源問題:與管理的DataGridView行

我有一個DataGridView這是一個可調整大小的Panel孩子,可以由用戶的鼠標輸入而調整。當調整Panel的大小時,DataGridView的大小會與其一起鏡像。這個想法是,而不是網格自動調整大小的列和行以適應單元格或網格空間的內容,列和行的數量將取決於網格的大小。行和列的寬度和高度是預先確定的,不需要調整。這一點的目的是讓用戶快速調整行和列的數量。最好通過代碼的一個短片來證明:Resizing Panel

爲了達到這個目的,我檢查面板是否調整大小,並根據它是否縮小或增長,相應地調整列。有一些神奇的事情在這裏,但它本質上是這樣的:

if(panel_width_is_growing) 
{ 
    if(margin >= growing_threshold) 
    { 
     DataGridViewColumn column = new DataGridViewColumn(); 
     column.Name = "Run " + (dataGridView.Columns.Count + 1).ToString(); 
     column.HeaderText = "Run " + (dataGridView.Columns.Count + 1).ToString(); 

     dataGridView.Columns.Add(column); 
    } 
} 

if(!panel_width_is_growing) 
{ 
    if(margin <= shrinking_threshold) 
    { 
     dataGridView.Columns.RemoveAt(dataGridView.Columns.Count - 1); 
    } 
} 

現在,這是我的問題來自於我從網格中添加和刪除行確切同樣的事情,雖然有。調整後的邊距和閾值以考慮行尺寸而不是列尺寸。唯一不同的是我期待在面板的高度,而不是寬度:

if(panel_height_is_growing) 
{ 
    if(margin >= row_threshold) 
    { 
     DataGridViewRow row = new DataGridViewRow(); 
     row.HeaderCell.Value = (dataGridView.Rows.Count + 1).ToString(); 
     dataGridView.Rows.Add(row);    
    }     
} 

,並出現沒有行......我想不通的問題。代碼打到所有必要的行,通過斷點和步進驗證。 RowCount屬性永遠不會增加,並且不會發出警報,因爲整個事件都被包裝在try catch塊中。沒有綁定與網格或超載默認行爲的特殊功能相關聯。

回答

0

問題出在打字(一個真正的骨頭的疏忽)。 DataGridViewColumn沒有默認的單元格模板,因此嘗試將列添加到列失敗。使用DataGridViewTextBoxColumn清除它。