Şu zamana kadar yazdığımız yazılarımızda bulunan kodlarımız ve C# bilginiz ile basit bir hesap makinesi uygulaması geliştirdik.
XMAL Arayüzü:
<Window x:Class="WPFGiris.D3.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:WPFGiris.D3" mc:Ignorable="d" Title="Hesap Makinesi" Height="525" Width="350"> <Grid Margin="10"> <Grid.ColumnDefinitions> <ColumnDefinition Width="*"/> <ColumnDefinition Width="*"/> <ColumnDefinition Width="*"/> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition Height="2*"/> <RowDefinition Height="*"/> <RowDefinition Height="*"/> <RowDefinition Height="*"/> <RowDefinition Height="*"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <Label x:Name="resultLabel" Content="0" Grid.ColumnSpan="4" HorizontalAlignment="Right" VerticalAlignment="Bottom" FontSize="60"/> <Button x:Name="acButton" Click="AcButton_Click" Content="AC" Grid.Row="1" Margin="5"/> <Button x:Name="negativeButton" Click="NegativeButton_Click" Content="+/1" Grid.Row="1" Grid.Column="1" Margin="5"/> <Button x:Name="percentageButton" Click="PercentageButton_Click" Content="%" Grid.Row="1" Grid.Column="2" Margin="5"/> <Button x:Name="divisionButton" Click="OperationButton_Click" Content="/" Grid.Row="1" Grid.Column="3" Margin="5"/> <Button x:Name="sevenButton" Click="NumberButton_Click" Content="7" Grid.Row="2" Grid.Column="0" Margin="5"/> <Button x:Name="eightButton" Click="NumberButton_Click" Content="8" Grid.Row="2" Grid.Column="1" Margin="5"/> <Button x:Name="nineButton" Click="NumberButton_Click" Content="9" Grid.Row="2" Grid.Column="2" Margin="5"/> <Button x:Name="multiplicationButton" Click="OperationButton_Click" Content="*" Grid.Row="2" Grid.Column="3" Margin="5"/> <Button x:Name="fourButton" Click="NumberButton_Click" Content="4" Grid.Row="3" Grid.Column="0" Margin="5"/> <Button x:Name="fiveButton" Click="NumberButton_Click" Content="5" Grid.Row="3" Grid.Column="1" Margin="5"/> <Button x:Name="sixButton" Click="NumberButton_Click" Content="6" Grid.Row="3" Grid.Column="2" Margin="5"/> <Button x:Name="substractionButton" Click="OperationButton_Click" Content="-" Grid.Row="3" Grid.Column="3" Margin="5"/> <Button x:Name="oneButton" Click="NumberButton_Click" Content="1" Grid.Row="4" Grid.Column="0" Margin="5"/> <Button x:Name="twoButton" Click="NumberButton_Click" Content="2" Grid.Row="4" Grid.Column="1" Margin="5"/> <Button x:Name="threeButton" Click="NumberButton_Click" Content="3" Grid.Row="4" Grid.Column="2" Margin="5"/> <Button x:Name="plusButton" Click="OperationButton_Click" Content="+" Grid.Row="4" Grid.Column="3" Margin="5"/> <Button x:Name="zeroButton" Click="NumberButton_Click" Content="0" Grid.Row="5" Grid.ColumnSpan="2" Margin="5"/> <Button x:Name="dotButton" Click="DotButton_Click" Content="." Grid.Row="5" Grid.Column="2" Margin="5"/> <Button x:Name="equalButton" Click="EqualButton_Click" Content="=" Grid.Row="5" Grid.Column="3" Margin="5"/> </Grid> </Window>

CODEBEHIND KISMI:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace WPFGiris.D3 { /// <summary> /// MainWindow.xaml etkileşim mantığı /// </summary> public partial class MainWindow : Window { double lastNumber,result; SelectedOperator selectedOperator; public MainWindow() { InitializeComponent(); //resultLabel.Content = "0"; //uygulama yüklenirken ilk atadığımız sayı... istersek başka sayı verebiliriz. acButton.Click += AcButton_Click; //AcButton_Click olayını çalıştırır // negativeButton.Click += NegativeButton_Click; Gerek yok. percentageButton.Click += PercentageButton_Click; //equalButton.Click += EqualButton_Click; } private void NumberButton_Click(object sender, RoutedEventArgs e) { int selectedValue = 0; if (sender == zeroButton) selectedValue = 0; //tıklanan butona göre selectedValue değişkenine sayı atarız if (sender == oneButton) selectedValue = 1; if (sender == twoButton) selectedValue = 2; if (sender == threeButton) selectedValue = 3; if (sender == fourButton) selectedValue = 4; if (sender == fiveButton) selectedValue = 5; if (sender == sixButton) selectedValue = 6; if (sender == sevenButton) selectedValue = 7; if (sender == eightButton) selectedValue = 8; if (sender == nineButton) selectedValue = 9; if (resultLabel.Content.ToString() == "0") { resultLabel.Content = $"{selectedValue}"; //butonun valuesinde yer alanı atar }else { resultLabel.Content = $"{resultLabel.Content}{selectedValue}"; // resultLabel content sıfır değilse mevcut sayının arkasına butonun valuesinde yer alan değeri ekler. } } private void OperationButton_Click(object sender, RoutedEventArgs e) { if (double.TryParse(resultLabel.Content.ToString(), out lastNumber)) { resultLabel.Content = "0"; } if (sender == multiplicationButton) selectedOperator = SelectedOperator.Multiplication; if (sender == divisionButton) selectedOperator = SelectedOperator.Division; if (sender == plusButton) selectedOperator = SelectedOperator.Addition; if (sender == substractionButton) selectedOperator = SelectedOperator.Substraction; } private void AcButton_Click(object sender, RoutedEventArgs e) { resultLabel.Content = "0"; lastNumber=0; result=0; } private void PercentageButton_Click(object sender, RoutedEventArgs e) { double tempNumber; if (double.TryParse(resultLabel.Content.ToString(), out tempNumber)) { tempNumber = tempNumber / 100; if (lastNumber != 0) tempNumber *= lastNumber; resultLabel.Content = tempNumber.ToString(); } } private void EqualButton_Click(object sender, RoutedEventArgs e) { double NewNumber; if (double.TryParse(resultLabel.Content.ToString(), out NewNumber)) { switch (selectedOperator) { case SelectedOperator.Addition: result = SimpleMath.Add(lastNumber, NewNumber); break; case SelectedOperator.Substraction: result = SimpleMath.Substraction(lastNumber, NewNumber); break; case SelectedOperator.Multiplication: result = SimpleMath.Multiply(lastNumber, NewNumber); break; case SelectedOperator.Division: result = SimpleMath.Divide(lastNumber, NewNumber); break; } resultLabel.Content = result.ToString(); } } private void DotButton_Click(object sender, RoutedEventArgs e) { if (resultLabel.Content.ToString().Contains(".")) { //Bir şey yapma } else { resultLabel.Content = $"{resultLabel.Content}."; } } private void NegativeButton_Click(object sender, RoutedEventArgs e) { if(double.TryParse(resultLabel.Content.ToString(), out lastNumber)) { lastNumber = lastNumber * (-1); resultLabel.Content = lastNumber.ToString(); } } } public enum SelectedOperator { Addition, Substraction, Multiplication, Division } public class SimpleMath { public static double Add(double n1, double n2) { return n1 + n2; } public static double Substraction(double n1, double n2) { return n1 - n2; } public static double Multiply(double n1, double n2) { return n1 * n2; } public static double Divide(double n1, double n2) { return n1 / n2; } } }
Bir cevap yazın