簡要介紹了我的問題的根源問題:與管理的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塊中。沒有綁定與網格或超載默認行爲的特殊功能相關聯。