Загрузка данных
<Window x:Class="CalculatorApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Калькулятор" Height="350" Width="300" ResizeMode="NoResize">
<Grid Margin="10">
<Grid.RowDefinitions>
<RowDefinition Height="50"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<TextBox x:Name="Display" FontSize="24" TextAlignment="Right" IsReadOnly="True" VerticalContentAlignment="Center" Margin="0,0,0,10" Text="0"/>
<UniformGrid Grid.Row="1" Columns="4" Rows="5">
<Button Content="7" Click="Number_Click" Margin="2"/>
<Button Content="8" Click="Number_Click" Margin="2"/>
<Button Content="9" Click="Number_Click" Margin="2"/>
<Button Content="/" Click="Operator_Click" Margin="2"/>
<Button Content="4" Click="Number_Click" Margin="2"/>
<Button Content="5" Click="Number_Click" Margin="2"/>
<Button Content="6" Click="Number_Click" Margin="2"/>
<Button Content="*" Click="Operator_Click" Margin="2"/>
<Button Content="1" Click="Number_Click" Margin="2"/>
<Button Content="2" Click="Number_Click" Margin="2"/>
<Button Content="3" Click="Number_Click" Margin="2"/>
<Button Content="-" Click="Operator_Click" Margin="2"/>
<Button Content="0" Click="Number_Click" Margin="2"/>
<Button Content="C" Click="Clear_Click" Margin="2"/>
<Button Content="^" Click="Operator_Click" Margin="2"/>
<Button Content="+" Click="Operator_Click" Margin="2"/>
<Button Content="=" Click="Equals_Click" Grid.ColumnSpan="4" Margin="2"/>
</UniformGrid>
</Grid>
</Window>
using System;
using System.Windows;
using System.Windows.Controls;
namespace CalculatorApp
{
public partial class MainWindow : Window
{
private double _firstNumber = 0;
private string _operation = "";
private bool _isOperationPressed = false;
public MainWindow()
{
InitializeComponent();
}
private void Number_Click(object sender, RoutedEventArgs e)
{
Button button = (Button)sender;
if (Display.Text == "0" || _isOperationPressed)
{
Display.Text = button.Content.ToString();
_isOperationPressed = false;
}
else
{
Display.Text += button.Content.ToString();
}
}
private void Operator_Click(object sender, RoutedEventArgs e)
{
Button button = (Button)sender;
if (double.TryParse(Display.Text, out double result))
{
_firstNumber = result;
_operation = button.Content.ToString();
_isOperationPressed = true;
}
}
private void Equals_Click(object sender, RoutedEventArgs e)
{
if (double.TryParse(Display.Text, out double secondNumber))
{
double result = 0;
switch (_operation)
{
case "+":
result = _firstNumber + secondNumber;
break;
case "-":
result = _firstNumber - secondNumber;
break;
case "*":
result = _firstNumber * secondNumber;
break;
case "/":
if (secondNumber == 0)
{
MessageBox.Show("Ошибка: деление на ноль.");
return;
}
result = _firstNumber / secondNumber;
break;
case "^":
result = Math.Pow(_firstNumber, secondNumber);
break;
}
Display.Text = result.ToString();
_operation = "";
}
}
private void Clear_Click(object sender, RoutedEventArgs e)
{
Display.Text = "0";
_firstNumber = 0;
_operation = "";
}
}
}