2012-08-04 21 views
2

在C#Winforms中,我想使用DataGridView作爲一個簡單的小部件來存儲顯示給用戶的信息。爲此,我想創建一個表格,5x10個單元格。用Y行編程創建一個帶有X列的DataGridView的最簡單的方法

經過一番研究,解決方案一次只允許添加一行或一列。我希望最初和直接創建整個網格,所以我可以開始使用數據填充它,就像使用標準C#2D數組一樣。

這是什麼最簡單的方法呢?函數頭看起來是這樣的:

createCells(DataGridView dgv, int cols, int rows) {}

它應該是快速,適合於改變cols和行更大或更小數目以後如果需要的話。

回答

4

順便說一句,有可能會像一個錯誤:

總和列FillWeight值不能超過65535

爲了避免它,AutoGenerateColumns屬性設置爲false,並設置FillWeight1爲每列產生:

dgv.AutoGenerateColumns = false; 
for (int i = 1; i <= columns; i++) 
{ 
    dgv.Columns.Add("col" + i, "column " + i); 
    dgv.Columns[i - 1].FillWeight = 1; 
} 
for (int j = 0; j < rows; j++) 
    dgv.Rows.Add(); 
+0

並且說如果我想在這之後創建一個更小的表並將其替換爲這個舊的?有沒有辦法刪除所有的單元或類似的? – 2012-08-04 09:39:28

+0

啊哈發現瞭如何:'dgv.Rows .Clear(); dgv.Columns.Clear();'。再次感謝您的幫助! – 2012-08-04 15:18:02

2

您可以通過這種方式使用for循環做:

this.dataGridView1 = DGV_Creation(dataGridView1, 5, 10); // 5 columns, 10 rows (empty rows) 

或:

DGV_Creation(ref this.dataGridView1, 5, 10); //5 columns, 10 rows (empty rows) 

private void DGV_Creation(ref DataGridView dgv, int columns, int rows) 
    { 
     for (int i = 1; i <= columns; i++) 
      dgv.Columns.Add("col" + i, "column " + i); 
     for (int j = 0; j < rows; j++) 
      dgv.Rows.Add(); 
    } 

與調用它

private DataGridView DGV_Creation(DataGridView dgv, int columns, int rows) 
    { 
     for (int i = 1; i <= columns; i++) 
     { 
      dgv.Columns.Add("col" + i, "column " + i); 
     } 
     for (int j = 0; j < rows; j++) 
     { 
      dgv.Rows.Add(); 
     } 
     return dgv; 
    } 

與說它

+0

太好了,謝謝。這個技巧是否即時,相當快(對於10000x20的單元格只有幾秒鐘),並且比我擔心的代碼少。我很快可能會打勾。 – 2012-08-04 05:06:19

+0

我已經添加了一點點不同的解決方案,通過使用ref關鍵字(不需要傳遞dataGridView對象(如dgv = ...),但完全按照你想要的方式 – 2012-08-04 05:08:06

+0

謝謝,我不認爲ref需要所有,因爲它已經發送了ref? – 2012-08-04 09:40:26

相關問題