2014-04-19 4 views
1

현재 지불금을 계산하기 위해 터치 스크린 프로그램을 작성 중입니다.C#으로 계산기 만들기

enter image description here

내가 달성하기 위해 노력하고 계산은 다음과 같습니다 남은 = 총 -을 지불했다.

남은 필드는 사용자가 입력 할 때 결과가 자동으로 채워 집니 까?

저는 실시간으로, 그리고 사용자가 유료 버튼을 누르면 그것을 원합니다.

void TextBox_KeyPress(object sender, KeyPressEventArgs e) 
    { 
     if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar)) 
     { 
      e.Handled = true; 
     } 
    } 

    void totalBtn_activate() 
    { 
     totalTxt.Select(); 
     totalTxt.BackColor = Color.FromArgb(245, 244, 162); 
     totalBtn.ForeColor = Color.Red; 

     paidTxt.BackColor = Color.White; 
     paidBtn.ForeColor = Color.Black; 

     remainTxt.BackColor = Color.White; 
     remainBtn.ForeColor = Color.Black; 
    } 

    private void paidBtn_Click(object sender, EventArgs e) 
    { 
     paidBtn_activate(); 
    } 

    private void paidTxt_Enter(object sender, EventArgs e) 
    { 
     paidBtn_activate(); 
    } 

    void paidBtn_activate() 
    { 
     paidTxt.Select(); 
     paidTxt.BackColor = Color.FromArgb(245, 244, 162); 
     paidBtn.ForeColor = Color.Red; 

     totalTxt.BackColor = Color.White; 
     totalBtn.ForeColor = Color.Black; 

     remainTxt.BackColor = Color.White; 
     remainBtn.ForeColor = Color.Black; 
    } 

    private void remainBtn_Click(object sender, EventArgs e) 
    { 
     remainBtn_activate(); 
    } 

    private void remainTxt_Enter(object sender, EventArgs e) 
    { 
     remainBtn_activate(); 
    } 

    private void totalBtn_Click(object sender, EventArgs e) 
    { 
     totalBtn_activate(); 
    } 

    private void totalTxt_Enter(object sender, EventArgs e) 
    { 
     totalBtn_activate(); 
    } 

    void remainBtn_activate() 
    { 
     remainTxt.Select(); 
     remainTxt.BackColor = Color.FromArgb(245, 244, 162); 
     remainBtn.ForeColor = Color.Red; 

     totalTxt.BackColor = Color.White; 
     totalBtn.ForeColor = Color.Black; 

     paidTxt.BackColor = Color.White; 
     paidBtn.ForeColor = Color.Black; 
    } 

    private void viewDrivers_Click(object sender, EventArgs e) 
    { 
     var form1 = new Form1(); 
     form1.Show(); 
     this.Close(); 
    } 

    private void AppendValue(string valueToAppend) 
    { 
     if (remainTxt.BackColor == Color.FromArgb(245, 244, 162)) 
     { 
      remainTxt.AppendText(valueToAppend); 
     } 
     else if (totalTxt.BackColor == Color.FromArgb(245, 244, 162)) 
     { 
      totalTxt.AppendText(valueToAppend); 
     } 
     else if (paidTxt.BackColor == Color.FromArgb(245, 244, 162)) 
     { 
      paidTxt.AppendText(valueToAppend); 
     } 
    } 

    bool dotControl = false; 
    int count = 0; 

    private void btn1_Click(object sender, EventArgs e) 
    { 
     if (dotControl && count == 0) 
     { 
      AppendValue("1"); 
      count++; 
     } 
     else if (count > 0) 
     { 
     } 
     else 
     { 
      AppendValue("1"); 
     } 
    } 

    private void btn2_Click(object sender, EventArgs e) 
    { 
     if (dotControl && count == 0) 
     { 
      AppendValue("2"); 
      count++; 
     } 
     else if (count > 0) 
     { 
     } 
     else 
     { 
      AppendValue("2"); 
     } 
    } 

    private void btn3_Click(object sender, EventArgs e) 
    { 
     if (dotControl && count == 0) 
     { 
      AppendValue("3"); 
      count++; 
     } 
     else if (count > 0) 
     { 
     } 
     else 
     { 
      AppendValue("3"); 
     } 
    } 

    private void btn4_Click(object sender, EventArgs e) 
    { 
     if (dotControl && count == 0) 
     { 
      AppendValue("4"); 
      count++; 
     } 
     else if (count > 0) 
     { 
     } 
     else 
     { 
      AppendValue("4"); 
     } 
    } 

    private void btn5_Click(object sender, EventArgs e) 
    { 
     if (dotControl && count == 0) 
     { 
      AppendValue("5"); 
      count++; 
     } 
     else if (count > 0) 
     { 
     } 
     else 
     { 
      AppendValue("5"); 
     } 
    } 

    private void btn6_Click(object sender, EventArgs e) 
    { 
     if (dotControl && count == 0) 
     { 
      AppendValue("6"); 
      count++; 
     } 
     else if (count > 0) 
     { 
     } 
     else 
     { 
      AppendValue("6"); 
     } 
    } 

    private void btn7_Click(object sender, EventArgs e) 
    { 
     if (dotControl && count == 0) 
     { 
      AppendValue("7"); 
      count++; 
     } 
     else if (count > 0) 
     { 
     } 
     else 
     { 
      AppendValue("7"); 
     } 
    } 

    private void btn8_Click(object sender, EventArgs e) 
    { 
     if (dotControl && count == 0) 
     { 
      AppendValue("8"); 
      count++; 
     } 
     else if (count > 0) 
     { 
     } 
     else 
     { 
      AppendValue("8"); 
     } 
    } 

    private void btn9_Click(object sender, EventArgs e) 
    { 
     if (dotControl && count == 0) 
     { 
      AppendValue("9"); 
      count++; 
     } 
     else if (count > 0) 
     { 
     } 
     else 
     { 
      AppendValue("9"); 
     } 
    } 

    private void btn0_Click(object sender, EventArgs e) 
    { 
     if (dotControl && count == 0) 
     { 
      AppendValue("0"); 
      count++; 
     } 
     else if (count > 0) 
     { 
     } 
     else 
     { 
      AppendValue("0"); 
     } 
    } 

    private void btndot_Click(object sender, EventArgs e) 
    { 
     if (!dotControl) 
     { 
      AppendValue("."); 
      dotControl = true; 
     } 
    } 

    private void RemoveLast(TextBox tb) 
    { 
     if (tb.Text.Length > 0) 
     { 
      if (char.IsDigit(tb.Text[tb.Text.Length - 1])) count = 0; 
      else 
      { 
       dotControl = false; 
       count = 0; 
      } 
      tb.Text = tb.Text.Remove(tb.Text.Length - 1, 1); 
     } 
    } 

    private void btnback_Click(object sender, EventArgs e) 
    { 
     if (remainTxt.BackColor == Color.FromArgb(245, 244, 162)) 
     { 
      RemoveLast(remainTxt); 
     } 
     else if (totalTxt.BackColor == Color.FromArgb(245, 244, 162)) 
     { 
      RemoveLast(totalTxt); 
     } 
     else if (paidTxt.BackColor == Color.FromArgb(245, 244, 162)) 
     { 
      RemoveLast(paidTxt); 
     } 
    } 

    private void btnreset_Click(object sender, EventArgs e) 
    { 
     dotControl = false; 
     count = 0; 

     if (remainTxt.BackColor == Color.FromArgb(245, 244, 162)) 
     { 
      remainTxt.Text = ""; 
     } 
     else if (totalTxt.BackColor == Color.FromArgb(245, 244, 162)) 
     { 
      totalTxt.Text = ""; 
     } 
     else if (paidTxt.BackColor == Color.FromArgb(245, 244, 162)) 
     { 
      paidTxt.Text = ""; 
     } 
    } 

    private void btnpay_Click(object sender, EventArgs e) 
    { 

    } 
+6

멋진 UI입니다. – Rahul

+0

TextBox의 TextChanged 이벤트에 대한 이벤트 핸들러를 현재 값으로 사용하는 것이 좋습니다. 그러면 계산을 수행하고 다른 TextBox의 나머지 값을 설정할 수 있습니다. –

+1

MVVM 모델을 사용하는 것이 좋습니다. 시작하기가 어려울 지 모르지만 시간을 정말로 가치있게 생각할 수도 있습니다. –

답변

1

텍스트 상자의 TextChanged 이벤트를 사용하십시오. 다음과 같은 것이 작동하지만 추가 오류 처리를 추가해야합니다.

totalTxt.TextChanged += new EventHandler(TextChanged); 
paidTxt.TextChanged += new EventHander(TextChanged); 

void TextChanged (object sender, EventArgs e) 
{ 
    remainTxt.Text = Convert.ToString(int.Parse(totalTxt.Text) - int.Parse(paidTxt.Text)); 
} 
관련 문제