C# WinForms 계산기 만들기

m0ng·2025년 4월 20일

C#을 이용한 WinForms 애플리케이션을 활용해 간단한 GUI 계산기


1. 계산기 UI

디자이너 화면에서 직접 컨트롤을 배치하며 인터페이스를 구성

  1. TextBox 컨트롤 2개를 폼 상단에 배치하고, 이름을 txtDisplay, txtInput으로 변경합니다.
    • txtDisplay는 이전 계산 결과를 보여줍니다.
    • txtInput은 사용자가 수식을 입력하거나 버튼을 클릭해 입력된 숫자를 표시합니다.
  2. Button 컨트롤 16개를 그리드 형태로 배치합니다.
    • 숫자 0~9, +, -, *, /, =, C(지우기) 버튼을 추가하세요.
    • 버튼의 Name 속성은 btn0, btn1, …, btnPlus, btnEquals, btnClear처럼 설정합니다.
  3. 각각 버튼의 Text 속성에 표시될 레이블(숫자, 연산자)을 입력합니다.
  4. 폼 크기와 폰트, 색상 등을 조정해 디자인을 마무리합니다.

3. 버튼 클릭 이벤트 연결

디자이너에서 각 버튼을 더블클릭해 클릭 이벤트 핸들러를 생성한 뒤, 아래 공통 로직에 연결합니다.

// 숫자 및 소수점 버튼 클릭 처리
private void NumberButton_Click(object sender, EventArgs e)
{
    var btn = sender as Button;
    txtInput.Text += btn.Text;  // 누른 버튼의 텍스트를 입력창에 추가
}

// 연산자 버튼 클릭 처리
private void OperatorButton_Click(object sender, EventArgs e)
{
    txtDisplay.Text = txtInput.Text + " " + (sender as Button).Text;
    txtInput.Clear();           // 다음 숫자를 입력받기 위해 초기화
}
숫자 버튼(btn0~btn9, btnDot)의 Click 이벤트 → NumberButton_Click

연산자 버튼(btnPlus, btnMinus, btnMultiply, btnDivide)의 Click 이벤트 → OperatorButton_Click
  1. 계산 실행 로직 구현

‘=’ 버튼을 눌렀을 때, txtDisplay와 txtInput의 값을 사용해 실제 계산을 수행합니다.

private void btnEquals_Click(object sender, EventArgs e)
{
    try
    {
        // 예: txtDisplay.Text = "12 +", txtInput.Text = "34"
        var parts = txtDisplay.Text.Split(' ');
        double left = double.Parse(parts[0]);
        char op    = parts[1][0];
        double right = double.Parse(txtInput.Text);

        double result = Calculate(left, right, op);
        txtInput.Text   = result.ToString();  // 결과를 입력창에 표시
        txtDisplay.Text = string.Empty;       // 이전 표시 초기화
    }
    catch (Exception ex)
    {
        MessageBox.Show("계산 오류: " + ex.Message);
    }
}
static double Calculate(double left, double right, char op)
{
    return op switch
    {
        '+' => left + right,
        '-' => left - right,
        '*' => left * right,
        '/' => right != 0 ? left / right : throw new DivideByZeroException(),
        _   => throw new InvalidOperationException($"지원하지 않는 연산자: {op}")
    };
}
btnEquals 클릭 이벤트에 연결

Calculate 메서드는 콘솔 버전과 동일한 로직을 재사용합니다.

0개의 댓글