2011-09-24 5 views
1

일부 분기 별 수치를 추가하려면 간단한 C# 응용 프로그램을 만들어야합니다. 배열을 사용하여 데이터를 "저장"한 다음 텍스트 상자에 배치합니다."계산"이 어떻게 작동하지 않습니까?

어쨌든 계산 섹션에 문제가 있습니다. 사람들이 쉽게 찾을 수 있도록 주석 태그를 붙였습니다. 영역은 작동하지만 두 번의 클릭이 필요하고 위의 행에 추가됩니다. 나는 약 1 시간 동안 똑같은 몇 줄을보고 있었고 이것 하나를 알아내는 것처럼 보일 수 없다. 거기에 어떤 아이디어가 있습니까?

//Global 
    int lastIndexUsed = -1; 
    int[,] quarters = new int[10, 5]; 
    string[] Branch = new string[10]; 

    public FrmSales() 
    { 
     InitializeComponent(); 
    } 

    private void txtBranch_TextChanged(object sender, EventArgs e) 
    { 

    } 

    private void btnCalc_Click(object sender, EventArgs e) 
    { 
     int Q1; 
     int Q2; 
     int Q3; 
     int Q4; 


     Q1 = int.Parse(txtQ1.Text); 
     Q2 = int.Parse(txtQ2.Text); 
     Q3 = int.Parse(txtQ3.Text); 
     Q4 = int.Parse(txtQ4.Text); 

     lastIndexUsed = lastIndexUsed + 1; 
     quarters[lastIndexUsed, 0] = Q1; 
     quarters[lastIndexUsed, 1] = Q2; 
     quarters[lastIndexUsed, 2] = Q3; 
     quarters[lastIndexUsed, 3] = Q4; 
     Branch[lastIndexUsed] = txtBranch.Text; 








     //Display Results 

     int ctr; 
     int ctr2; 
     string outLine; 
     string tempName; 

     int row; 
     int col; 
     int accum; 


     txtInfo.Text = ""; 

     outLine =   " Branch  Q1   Q2   Q3   Q4  Total " + "\r\n"; 
     outLine = outLine + "========== ========== ========== ========== ========== ==========" + "\r\n"; 

     txtInfo.Text = outLine; 


     for (ctr = 0; ctr <= lastIndexUsed; ctr++) 
     { 

      outLine = ""; 

      tempName = Branch[ctr].PadLeft(10); 
      outLine = outLine + tempName + " "; 

      for (ctr2 = 0; ctr2 <= 4; ctr2 = ctr2 + 1) 

      { 


       outLine = outLine + quarters[ctr, ctr2].ToString().PadLeft(10) + " "; 

      } 

      txtInfo.Text = txtInfo.Text + outLine + "\r\n"; 


     } 

     //Calculate ########################################################### 

     for (row = 0; row <= lastIndexUsed; row++) 
     { 

      accum = 0; 


      for (col = 0; col <= 3; col++) 
      { 

       accum = accum + quarters[row, col]; 

      } 
      quarters[row, 4] = accum; 
     } 




     //End Calculate ######################################################### 

    } 

    private void btnClear_Click(object sender, EventArgs e) 
    { 
     txtBranch.Text = ""; 
     txtQ1.Text = ""; 
     txtQ2.Text = ""; 
     txtQ3.Text = ""; 
     txtQ4.Text = ""; 
     txtInfo.Text = ""; 

    } 

    private void btnExit_Click(object sender, EventArgs e) 
    { 
     Close(); 
    } 
+1

이상 갈 것이기 때문에 버튼 충분한 시간을 클릭하면 바로

  • 유사한있는 DataGridView를 사용하거나, 당신은 경계 예외 밖으로 배열 인덱스가됩니다 문제를 보여 주겠습니까? –

  • +0

    전체 코드를 분석하고 사람들이 완전히 이해할 수 있도록하고 싶었습니다. (아마도 다른 위치에서 오류가 발생 했습니까?) – Brandon

    +2

    공백으로 쉽게 갈 수 있습니다. – Blender

    답변

    5

    문제는 간단합니다. 실제로 값을 계산하기 전에 quarters 배열을 사용합니다. 첫 번째 루프 위에 "calculate"루프를 이동하십시오.

    또한 (다른 것들 사이) :

    • 너무 많은 빈 줄과 공백을; 읽을 수 없게 만듭니다.
    • 텍스트를 사용하여 서식이 지정된 보고서를 만들지 마십시오. lastIndexUsed가 위해 필요하다고 어떻게 그 많은 코드 (10)
    +0

    나는 동의한다, 약간의 세부는 약간 개략이다. 그러나 나는 요구에 따라 그것을하고있다. 결국에는 유효성 검사를 추가하여 10 이상을 입력 할 때 오류가 발생하지 않도록해야합니다. 텍스트 상자를 사용하여 서식이 지정된 보고서를 작성한다는 아이디어는 눈에 아주 이상하고 어렵습니다. 도움 주셔서 감사합니다, 문제를 해결! – Brandon

    관련 문제