2017-01-02 15 views
1

enter image description hereDataGridviewで選択した行の値を取得して追加する

今すぐ予約winsformアプリケーションを作成しています。ユーザーが任意の数の行を選択すると、各行にあるレンタル価格という列が表示されます。次に、レンタル価格と呼ばれる列の下にあるこのセルの値が取得され、合計されて総原価ラベルテキストに表示されます。 しかし、問題は総コストが表示されていないことです。ここは私のコードです:

private void Payment_Load(object sender, EventArgs e) 
{ 
    NameOfUser.Text = UserAccounts[0].Name; 
    EmailOfUser.Text = UserAccounts[0].Email; 
    PaymentType.Text = UserAccounts[0].PaymentType;   
    double totalCost = 0; 
    foreach (DataGridViewRow row in b1.DataGridView1.SelectedRows) 
    { 
     int index = 0; 
     foreach (DataGridViewCell cell in row.Cells) 
     { 
      totalCost += (double)dataGridView1.Rows[index].Cells[4].Value; 
     } 
     index++; 
    } 

    TotalCost.Text = Convert.ToString(totalCost); 
} 
+0

エラーまたは例外が発生していますか?あなたはブレークポイント –

+0

@幸運にも、エラー/例外はありませんでした。ブレイクポイントを追加しましたが、通過しませんでした。 – Sofia

答えて

3

はい間違いが、今あなたがSelectedRows内の行を反復され、内部ループを使用することにより、あなたは再びそれぞれの行のセルをループしかし、値を取るとして、ループでありますセルの代わりに実際のグリッドに対して。選択した行を繰り返し処理したいので、これを簡単にすることができ、各行の.Cells[4]の値を合計する必要があります。そのためには、次のようなことをする必要があります。

foreach (DataGridViewRow row in b1.DataGridView1.SelectedRows) 
{ 
    string value = row.Cells[4].Value.ToString(); 
    double currentCellValue = 0.0; 
    if(double.TryParse(value , out currentCellValue) 
    { 
     totalCost += currentCellValue; 
    } 
} 
TotalCost.Text = totalCost .ToString(); 
+0

ありがとう!それは私の問題を解決する!私はそれをupvotedしかし、私の評判が15未満であるため、それは公開されませんでした。申し訳ありません! – Sofia

+0

そのok、あなたを手伝ってうれしい.......... happy codding –

+0

母はちょうどいい、私の評判は15になった。それをアップアップした!どうもありがとうございました!!! – Sofia

関連する問題