2012-12-03 84 views
1

在互聯網上有答案,但它不工作,我想知道我做錯了什麼。以編程方式向datagridview添加一行

我有一個DataGridView 1列,Column1。這是列的名稱,而不是文本或其他任何內容。

private void InitializeComponent() 
    { 
     this.dataGridView1 = new System.Windows.Forms.DataGridView(); 
     this.Column1 = new System.Windows.Forms.DataGridViewTextBoxColumn(); 
     ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit(); 
     this.SuspendLayout(); 
     // 
     // dataGridView1 
     // 
     this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; 
     this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { 
     this.Column1}); 
     this.dataGridView1.Name = "dataGridView1"; 
     // 
     // Column1 
     // 
     this.Column1.HeaderText = "Column1"; 
     this.Column1.Name = "Column1"; 
     ..... 
    } 

    public Form1() 
    { 
     InitializeComponent(); 

     // Works 
     DataGridViewRow row = (DataGridViewRow)dataGridView1.Rows[0].Clone(); 
     row.Cells[0].Value = "AAAAA"; 
     dataGridView1.Rows.Add(row); 

     // Fails 
     row = (DataGridViewRow)dataGridView1.Rows[0].Clone(); 
     row.Cells["Column1"].Value = "AAAAA"; // Argument Exception: "Column named Column1 cannot be found" 
     dataGridView1.Rows.Add(row); 
    } 

請解釋一下嗎?非常感謝!

回答

2

該行不是Datagridview的一部分,因此無法找到該列。要麼將其添加回datagridview FIRST,然後使用列名稱OR列出單元格的OR值來分配值:

row.Cells[dataGridView1.Columns["Column1"].Index].Value = "AAAAA"; 
+0

謝謝!我看到的其他地方都提到了我的代碼。沒有意識到行不是表的一部分,或者它沒有引用列,因爲它是一行的克隆。無論哪種方式,這就是我一直在尋找的,所以謝謝! – Tizz

相關問題