2016-08-02 6 views
0

私はここにこだわりました。
私はDataGridViewを8列(ユーザー入力のための7番目の待ち時間と8番目の数学があります)しています。
これは私が「追加」を意味し、「Adauga」をクリックすると、総キロカロリーテキストボックスが
キロカロリー(列)*(cantitate =数量)とプレタにその値を更新する必要があります親フォーム複数のDataGridViewCellから値を追加してTextBoxに出力する方法?

Parent Form

です合計=合計価格はその値をプレット=価格(列)*(キャンティート)
に更新しますが、これは1行だけです。私が説明してみましょう:あなたが上から見ることができるように、私は3番目のボタン(上から下へ)をクリックし、618,10を返しました(kcalは618 * 1です)。 、見てThey don't add

値は以前のものに追加されない、私はこれを行う方法がわかりません。 これはコードです:

private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) 
    { 
     var senderGrid = (DataGridView)sender; 
     if (senderGrid.Columns[e.ColumnIndex] is DataGridViewButtonColumn && e.RowIndex >= 0) 
     { 
      var pret = dataGridView1.Rows[e.RowIndex].Cells[3].Value; 
      var kcal = dataGridView1.Rows[e.RowIndex].Cells[4].Value; 
      var qt = dataGridView1.Rows[e.RowIndex].Cells[6].Value; 
      int qty = int.Parse(qt.ToString()); 
      int kca = int.Parse(kcal.ToString()); 
      int pre = int.Parse(pret.ToString()); 
      int kcalTotal = 0, pretTotal = 0; 
      kcalTotal = kcalTotal + (qty * kca); 
      pretTotal = pretTotal + (qty * pre); 
      totalPR.Text = pretTotal.ToString(); 
      totalKC.Text = kcalTotal.ToString(); 
     } 
    } 

答えて

0

私が正しくあなたの質問を理解している場合は、クリックされた行の値を合計します。だからあなたの最初のクリックした後、価格のTextBoxが10を表示する必要があり、それはあなたがあなたの質問を意味する方法だ場合は次の23の後、あなたはわずか数行追加する必要があります。

変更

int kcalTotal = 0, pretTotal = 0; 

int kcalTotal = 0, pretTotal = 0; 
int.TryParse(totalKC.Text, out kcalTotal); 
int.TryParse(totalPR.Text, out pretTotal); 
+0

これを行うと、「入力文字列が正しい形式ではありません」というエラーが表示されます。 –

+0

これは(おそらく)あなたのテキストボックスのデフォルト値が空であるためです。あなたは 'try-catch'を使うか、テキストボックスのデフォルト値を' '0 ''にするか、 '' int.TryParse'を使う必要があります。 私の答えを編集し、それをint.TryParseアプローチに変更しました。 – zockDoc

+0

ありがとう、ありがとう。これらのコードの背後にある "魔法"を教えてください。私は毎日勉強しているC#WinFormsを初めて使っています:) Btw、TryParseアプローチを使用しましたが、あなたが言及した3つのうちどれが最も効果的ですか? –

関連する問題