WPF(Windows Presentation Foundation)는 Windows 운영체제에서 GUI(Graphical User Interface)를 개발하기 위한 플랫폼입니다. 이번에는 WPF를 이용하여 간단한 계산기를 만들어보겠습니다.
XAML 파일 생성
먼저, Visual Studio를 실행하고 WPF Application을 생성합니다. 이후 Solution Explorer에서 MainWindow.xaml 파일을 더블클릭하여 엽니다.
레이아웃 구성
계산기의 레이아웃을 구성하기 위해 Grid를 이용합니다. Grid는 행과 열로 이루어진 레이아웃을 생성할 수 있습니다. MainWindow.xaml 파일에서 Grid를 다음과 같이 설정합니다.
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="auto"/>
</Grid.ColumnDefinitions>
<!-- 여기에 버튼들을 추가합니다. -->
</Grid>
Grid.RowDefinitions와 Grid.ColumnDefinitions는 Grid 내부에 행과 열을 추가하는데 사용됩니다. 위의 코드에서는 5개의 행과 4개의 열을 추가하였습니다. 첫 번째 행은 "*"로 설정하여 화면 전체를 차지하도록 하였습니다. 두 번째부터 다섯 번째 행은 "auto"로 설정하여 내부 컨트롤의 크기에 따라 크기가 자동으로 조정되도록 하였습니다. 네 개의 열은 모두 "auto"로 설정하여 내부 컨트롤의 크기에 따라 크기가 자동으로 조정되도록 하였습니다.
버튼 추가
이제 계산기에서 사용할 버튼들을 추가합니다. 버튼은 Button 태그를 이용하여 추가할 수 있습니다. 예를 들어, 숫자 1을 입력하는 버튼은 다음과 같이 추가할 수 있습니다.
<Button Content="1" Grid.Row="2" Grid.Column="0"/>
위의 코드에서 Grid.Row와 Grid.Column 속성은 버튼이 위치할 행과 열을 지정합니다. 이제 계산기에 필요한 버튼들을 추가합니다. 예를 들어, 숫자 버튼은 다음과 같이 추가할 수 있습니다.
<Button Content="0" Grid.Row="4" Grid.Column="1"/>
<Button Content="1" Grid.Row="3" Grid.Column="0"/>
<Button Content="2" Grid.Row="3" Grid.Column="1"/>
<Button Content="3" Grid.Row="3" Grid.Column="2"/>
<Button Content="4" Grid.Row="2" Grid.Column="0"/>
<Button Content="5" Grid.Row="2" Grid.Column="1"/>
<Button Content="6" Grid.Row="2" Grid.Column="2"/>
<Button Content="7" Grid.Row="1" Grid.Column="0"/>
<Button Content="8" Grid.Row="1" Grid.Column="1"/>
<Button Content="9" Grid.Row="1" Grid.Column="2"/>
이제 연산자 버튼과 C, = 버튼을 추가합니다.
<Button Content="+" Grid.Row="1" Grid.Column="3"/>
<Button Content="-" Grid.Row="2" Grid.Column="3"/>
<Button Content="*" Grid.Row="3" Grid.Column="3"/>
<Button Content="/" Grid.Row="4" Grid.Column="3"/>
<Button Content="C" Grid.Row="1" Grid.Column="2"/>
<Button Content="=" Grid.Row="4" Grid.Column="2"/>
계산기 로직 추가
마지막으로 계산기의 로직을 추가합니다. 이번에는 C# 코드를 사용하여 로직을 작성합니다. MainWindow.xaml.cs 파일을 열고, 버튼 클릭 이벤트를 다음과 같이 작성합니다.
private string currentOperator = string.Empty;
private string leftOperand = string.Empty;
private string rightOperand = string.Empty;
private void Button_Click(object sender, RoutedEventArgs e)
{
Button button = (Button)sender;
string buttonContent = button.Content.ToString();
if (buttonContent == "C")
{
currentOperator = string.Empty;
leftOperand = string.Empty;
rightOperand = string.Empty;
}
else if (buttonContent == "=")
{
double left = double.Parse(leftOperand);
double right = double.Parse(rightOperand);
double result = 0;
switch (currentOperator)
{
case "+":
result = left + right;
break;
case "-":
result = left - right;
break;
case "*":
result = left * right;
break;
case "/":
result = left / right;
break;
}
TextBoxResult.Text = result.ToString();
currentOperator = string.Empty;
leftOperand = string.Empty;
rightOperand = string.Empty;
}
else if (buttonContent == "+" || buttonContent == "-" || buttonContent == "*" || buttonContent == "/")
{
currentOperator = buttonContent;
}
else
{
if (currentOperator == string.Empty)
{
leftOperand += buttonContent;
TextBoxResult.Text = leftOperand;
}
else
{
rightOperand += buttonContent;
TextBoxResult.Text = rightOperand;
}
}
}
이제 버튼 클릭 이벤트에서 입력받은 값을 처리할 수 있습니다. 계산기의 초기화와 계산 결과 출력 로직을 추가하고, 숫자와 연산자 입력 로직을 작성합니다. 현재 연산자를 저장하는 currentOperator, 왼쪽 피연산자를 저장하는 leftOperand, 오른쪽 피연산자를 저장하는 rightOperand 3개의 변수를 선언하고 초기화합니다. 계산기 초기화 버튼(C)을 클릭하면 모든 변수를 초기화합니다. 계산 결과 출력 버튼(=)을 클릭하면, leftOperand와 rightOperand를 double형으로 변환하여 저장하고, currentOperator에 따라 연산을 수행합니다. TextBoxResult에 결과를 출력하고, 모든 변수를 초기화합니다. 연산자 버튼을 클릭하면, currentOperator에 해당 연산자를 저장합니다. 숫자 버튼을 클릭하면, currentOperator가 비어있는 경우 leftOperand에, 그렇지 않은 경우 rightOperand에 값을 추가합니다. TextBoxResult에 leftOperand나 rightOperand 값을 출력합니다.
결론
WPF를 이용하여 간단한 계산기를 만들어보았습니다. 이제 여러분은 WPF를 이용하여 다양한 GUI를 개발할 수 있습니다.
'개발' 카테고리의 다른 글
[C++] string to int 형변환 방법 (0) | 2023.06.07 |
---|---|
[C언어] string 함수들 (예제포함) (0) | 2023.06.06 |
[C#, wpf] 다운로더 만들기 (0) | 2023.06.04 |
[C#, WPF] 그리드 만들기 (0) | 2023.06.03 |
[C#] 문자열과 숫자 형변환 방법 (0) | 2023.06.02 |