C#을 이용한 WinForms 애플리케이션을 활용해 간단한 GUI 계산기
디자이너 화면에서 직접 컨트롤을 배치하며 인터페이스를 구성
txtDisplay, txtInput으로 변경합니다. txtDisplay는 이전 계산 결과를 보여줍니다. txtInput은 사용자가 수식을 입력하거나 버튼을 클릭해 입력된 숫자를 표시합니다. +, -, *, /, =, C(지우기) 버튼을 추가하세요. Name 속성은 btn0, btn1, …, btnPlus, btnEquals, btnClear처럼 설정합니다. 디자이너에서 각 버튼을 더블클릭해 클릭 이벤트 핸들러를 생성한 뒤, 아래 공통 로직에 연결합니다.
// 숫자 및 소수점 버튼 클릭 처리
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
‘=’ 버튼을 눌렀을 때, 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 메서드는 콘솔 버전과 동일한 로직을 재사용합니다.