Загрузка данных
using Avalonia.Controls;
using Avalonia.Interactivity;
using System;
namespace AvaloniaCalc
{
public partial class MainWindow : Window
{
double firstNumber = 0;
string operation = "";
bool isNewInput = true;
public MainWindow()
{
InitializeComponent();
}
// Ввод цифр
private void OnNumberClick(object sender, RoutedEventArgs e)
{
Button btn = (Button)sender;
string digit = btn.Content.ToString();
if (Display.Text == "0" || isNewInput)
{
Display.Text = digit;
isNewInput = false;
}
else
{
Display.Text = Display.Text + digit;
}
}
// Выбор действия (+, -, *, /)
private void OnOpClick(object sender, RoutedEventArgs e)
{
Button btn = (Button)sender;
firstNumber = Convert.ToDouble(Display.Text);
operation = btn.Content.ToString();
isNewInput = true;
}
// Вычисление результата (=) с использованием switch...case
private void OnEqualsClick(object sender, RoutedEventArgs e)
{
double secondNumber = Convert.ToDouble(Display.Text);
double result = 0;
switch (operation)
{
case "+":
result = firstNumber + secondNumber;
break;
case "-":
result = firstNumber - secondNumber;
break;
case "*":
result = firstNumber * secondNumber;
break;
case "/":
if (secondNumber != 0)
{
result = firstNumber / secondNumber;
}
else
{
Display.Text = "Ошибка";
isNewInput = true;
return;
}
break;
default:
result = secondNumber;
break;
}
Display.Text = result.ToString();
isNewInput = true;
}
// Очистка (C)
private void OnClearClick(object sender, RoutedEventArgs e)
{
Display.Text = "0";
firstNumber = 0;
operation = "";
isNewInput = true;
}
}
}
<Window xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="AvaloniaCalc.MainWindow"
Title="Простой калькулятор" Height="400" Width="300"
CanResize="False" WindowStartupLocation="CenterScreen">
<Grid RowDefinitions="Auto, *">
<!-- Поле вывода результата -->
<TextBox Name="Display" Grid.Row="0" Margin="10"
Height="50" FontSize="24" TextAlignment="Right"
IsReadOnly="True" Text="0"/>
<!-- Сетка кнопок -->
<Grid Grid.Row="1" Margin="10" RowDefinitions="*,*,*,*" ColumnDefinitions="*,*,*,*">
<Grid.Styles>
<Style Selector="Button">
<Setter Property="Margin" Value="4"/>
<Setter Property="HorizontalAlignment" Value="Stretch"/>
<Setter Property="VerticalAlignment" Value="Stretch"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="FontSize" Value="20"/>
</Style>
</Grid.Styles>
<!-- Ряд 1 -->
<Button Content="7" Grid.Row="0" Grid.Column="0" Click="OnNumberClick"/>
<Button Content="8" Grid.Row="0" Grid.Column="1" Click="OnNumberClick"/>
<Button Content="9" Grid.Row="0" Grid.Column="2" Click="OnNumberClick"/>
<Button Content="/" Grid.Row="0" Grid.Column="3" Click="OnOpClick"/>
<!-- Ряд 2 -->
<Button Content="4" Grid.Row="1" Grid.Column="0" Click="OnNumberClick"/>
<Button Content="5" Grid.Row="1" Grid.Column="1" Click="OnNumberClick"/>
<Button Content="6" Grid.Row="1" Grid.Column="2" Click="OnNumberClick"/>
<Button Content="*" Grid.Row="1" Grid.Column="3" Click="OnOpClick"/>
<!-- Ряд 3 -->
<Button Content="1" Grid.Row="2" Grid.Column="0" Click="OnNumberClick"/>
<Button Content="2" Grid.Row="2" Grid.Column="1" Click="OnNumberClick"/>
<Button Content="3" Grid.Row="2" Grid.Column="2" Click="OnNumberClick"/>
<Button Content="-" Grid.Row="2" Grid.Column="3" Click="OnOpClick"/>
<!-- Ряд 4 -->
<Button Content="C" Grid.Row="3" Grid.Column="0" Click="OnClearClick"/>
<Button Content="0" Grid.Row="3" Grid.Column="1" Click="OnNumberClick"/>
<Button Content="=" Grid.Row="3" Grid.Column="2" Click="OnEqualsClick"/>
<Button Content="+" Grid.Row="3" Grid.Column="3" Click="OnOpClick"/>
</Grid>
</Grid>
</Window>