2016-11-26 5 views
2

これを解決する方法を見つけることができません。 DataGridViewで2つのセルの合計を計算し、その合計を2で割り、その値を特定のセルに書き込む必要があります。ボタンをクリックすると、このエラーが表示されます:2 DataGridViewセルの値を計算する - C#

Unable to cast object of type 'System.Windows.Forms.DataGridViewTextBoxCell' to type 'System.IConvertible'.

このエラーを解決するにはどうすればよいですか?私のコードはこれです:

private void button4_Click(object sender, EventArgs e) 
    { 
     int total; 
     foreach(DataGridViewColumn column in dataGridView1.Columns) 
     { 
      total = dataGridView1.Rows.OfType<DataGridViewRow>().Sum(r => Convert.ToInt32(r.Cells[2])); 
      dataGridView1.Rows[4].Cells[column.Index].Value = total; 
     } 
    } 

私を助けてください!ありがとう:)

答えて

2

セルを整数に変換しているため、セル値を取得するのにCell.Valueを使用できません。この

total = dataGridView1.Rows.OfType<DataGridViewRow>().Sum(r => Convert.ToInt32(r.Cells[1].Value)); 
+0

変更

total = dataGridView1.Rows.OfType<DataGridViewRow>().Sum(r => Convert.ToInt32(r.Cells[2])); 

ありがとう!これは修正されましたが、今度は次の行を表示してエラーします:)これは>索引が範囲外だったと言います。負でなく、コレクションのサイズより小さくなければなりません。それを修正する方法はありますか? – DannyDSB

+1

行番号 'dataGridView1.Rows [4]'をチェックすると、4番目の位置に行が存在するはずです。 – Callisto

+0

ありがとうございました!私のDataGridViewは1つの行しか持っていなかったので、何とか行と列の違いで混乱しました。 – DannyDSB

関連する問題