2017-08-06 1 views
0

私はdataGridViewを持ち、その値をテキストボックスに転送するフォームを持っていますが、いずれかの列をクリックするとArgumentOutOfRangeExceptionが得られます。DataGridViewがArgumentOutOfRangeExceptionを取得しています

行だけをクリックすると、これらのコードは正常に動作します。

private void dataGridProd_CellContentClick(object sender, DataGridViewCellEventArgs e) 
    { 
     DataGridViewRow row = this.dataGridProd.Rows[e.RowIndex]; 

     foreach (DataGridViewColumn column in dataGridProd.Columns) 
     { 
      column.SortMode = DataGridViewColumnSortMode.NotSortable; 

      txBName.Text = row.Cells[1].Value.ToString(); 
      txBPrice.Text = row.Cells[2].Value.ToString(); 
     } 
     btnAdd.Enabled = true; 
     prodQuanUpDown.Enabled = true; 
    } 

どのようなタイプの応答も高く評価されています。前もって感謝します!

+0

例外は何行ですか? – Ben

+0

productNameとproductPriceについて – vicserna1997

+0

row.Cells配列のアイテム数はいくつですか? – KiwiPiet

答えて

0

まず、foreachループが必要な理由がわかりません。ArgumentOutOfRangeExceptionがある場合は、以下の2行が原因です。あなたは本当に列のためにそれらの多くの列を持っていますか?あなたはそれがrow.Cells[0].Value.toString();

row.Cells[1].Value.toString(); <する必要があります最初の列にある場合row.Cells.Count

txBName.Text = row.Cells[1].Value.ToString(); 
txBPrice.Text = row.Cells[2].Value.ToString(); 
0

は表の第二欄に実際に製品の製品名ですと言っCellsコレクションにCountプロパティを確認することができます - - これは2列目の価格です.2列目にある場合は

この回答が役立ちます。

関連する問題