2016-08-02 3 views
0

여기에 붙어 있습니다.
DataGridView에 8 개의 열 (사용자 입력을위한 7 번째 대기와 8 번째 연산)이 있습니다.
이것은 내가 "추가"의미 "에 올리기"를 클릭하면 총 킬로 칼로리 텍스트 상자가
킬로 칼로리 (열) * (cantitate = 양)와 프레 타에 그 값을 업데이트해야합니다 부모 폼여러 DataGridViewCell에서 값을 추가하고 TextBox에 출력하는 방법?

Parent Form

입니다 합계 = 총 가격은 그 값을 pret = 가격 (열) * (상정)
으로 업데이트합니다. 단 하나의 행에 대해서만 적용됩니다. 설명해 드리겠습니다 : 위에서 볼 수 있듯이 3 번 (아래에서 위로) 버튼을 클릭하면 618,10 (가격은 10 * 1 수량) (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

올바르게, 당신은 클릭 한 행의 값을 요약하고자합니다.

int kcalTotal = 0, pretTotal = 0; 

을에

변화 : 그건 당신이 질문을 의미하는 방법은 경우에 따라서 당신의 첫 번째 클릭 후, 가격 텍스트 상자를 눌러 다음 23 후, 10을 표시해야합니다, 당신은 단지 몇 줄을 추가해야

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 접근법을 사용했는데 언급 한 세 가지 중 가장 효과적인 것은 무엇인가? –

관련 문제