Jak zrobić dodawanie w kalkulatorze?

0

Witam.
Programuje w C#, Wpf
Zrobiłem kalkultor, ale nie działa mi dodawanie :

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 StanKonta
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public delegate void RoutedEventHandler(
    object sender,
    RoutedEventArgs e
);
    public partial class MainWindow : Window
    {

        public MainWindow()
        {
            InitializeComponent();
        }
        int screen;
        double a;
        double result = 0;
        private void Odejmowanie_Click(object sender, RoutedEventArgs e)
        {
            a = double.Parse(TXB_2.Text);
            textbox.Text = (result.ToString());
            result -= a;
            TXB_2.Text = "";
        }

        private void Usuwanie_Click(object sender, RoutedEventArgs e)
        {
            textbox.Text = "";
        }

        private void B_1_Click(object sender, RoutedEventArgs e)
        {
            TXB_2.Text = TXB_2.Text + "1";
        }

        private void B_2_Click(object sender, RoutedEventArgs e)
        {
            TXB_2.Text = TXB_2.Text + "2";
        }

        private void B3_Click(object sender, RoutedEventArgs e)
        {
            TXB_2.Text = TXB_2.Text + "3";
        }

        private void B4_Click(object sender, RoutedEventArgs e)
        {
            TXB_2.Text = TXB_2.Text + "4";
        }
        private void B5_Click(object sender, RoutedEventArgs e)
        {
            TXB_2.Text = TXB_2.Text + "5";
        }

        private void B6_Click(object sender, RoutedEventArgs e)
        {
            TXB_2.Text = TXB_2.Text + "6";
        }

        private void B7_Click(object sender, RoutedEventArgs e)
        {
            TXB_2.Text = TXB_2.Text + "7";
        }

        private void B8_Click(object sender, RoutedEventArgs e)
        {
            TXB_2.Text = TXB_2.Text + "8";
        }

        private void B9_Click(object sender, RoutedEventArgs e)
        {
            TXB_2.Text = TXB_2.Text + "9";
        }

        private void B0_Click(object sender, RoutedEventArgs e)
        {
            TXB_2.Text = TXB_2.Text + "0";
        }

        private void ALEK_Click(object sender, EventArgs e)
        {
            Properties.Settings.Default.textbox = textbox.Text;
            Properties.Settings.Default.Save();
        }

        private void AlEKL_Load(object sender, RoutedEventArgs e)
        {
            textbox.Text = Properties.Settings.Default.textbox;
        }

        private void Przeci_Click(object sender, RoutedEventArgs e)
        {
            TXB_2.Text = TXB_2.Text + ",";
        }

        private void Dodawanie_Click(object sender, RoutedEventArgs e)
        {
            var originalNumber = double.Parse(textbox.Text);
            var numberToAdd = double.Parse(a.ToString()); //a to liczba którą wpiszemy do TXB_2
            var sumOfNumbers = originalNumber + numberToAdd;
            textbox.Text = sumOfNumbers.ToString();
            TXB_2.Text = "";
        }
    }
}

Odejmowanie jest zrobione inną metodą, ale ona nie odejmuje tylko pisze wybranąliczbę z minusem.
Co mam zrobić?

0

Sprawdziłeś już w którym miejscu leci jaki exception czy dalej ci się nie chciało?

0

Przecież napisałem Ci już w http://4programmers.net/Forum[...]kulatorze?p=1305674#id1305674:

xfin napisał(a):

Nie masz nigdzie (w przypadku dodawania) wpisania wartości do zmiennej a:

a = double.Parse(TXB_2.Text); //<- to się pojawia tylko jeśli chcesz odejmować. przy dodawaniu też by się przydało.

Swoją drogą - zacznij porządnie nazywać zmienne, bo bardzo źle się to czyta.

Robisz coś takiego:

        private void Dodawanie_Click(object sender, RoutedEventArgs e)
        {
            var originalNumber = double.Parse(textbox.Text);
            var numberToAdd = double.Parse(a.ToString()); //a to liczba którą wpiszemy do TXB_2
            var sumOfNumbers = originalNumber + numberToAdd;
            textbox.Text = sumOfNumbers.ToString();
            TXB_2.Text = "";
        }

AWięc jeszcze raz - gdzie w funkcji dodawania wpisujesz wartość z TXB_2 do zmiennej a?

0

Jak to zrobić?

0
alekplus napisał(a):

Jak to zrobić?

Nie obraź się, ale jak nie wiesz jak ustawić breakpointa, to powinieneś wrócić do nauki C# i podstaw VS, bo WPF wymaga już tej znajomości.

Obawiam się, że porwałeś się trochę z motylą nogą na księżyc.

Breakpointa ustawia się klikając na samym brzegu okienka z kodem z lewej strony, przy tej linijce, która ma być zatrzymana. Pojawi się czerwone kółeczko oznaczające breakpoint.

https://msdn.microsoft.com/pl-pl/library/k80ex6de(v=vs.90).aspx

0
var originalNumber = double.Parse(textbox.Text); 

Błąd: System.FormatException: „Nieprawidłowy format ciągu wejściowego.”

0

No to chyba wiele wyjaśnia.
Co masz w tym textbox.Text?

0

Dalej crash :c

0

:c

Jakbyś w końcu napisał co się znajduje w momencie crasha w textbox.Text, to problem byśmy rozwiązali już 3 dni temu.

0

trochę zgaduję ale moim zdaniem program wywala się na tej linii
var originalNumber = double.Parse(textbox.Text);

a dzieje się tak dlatego , że wcześniej czyścisz pole textbox wywołując

    private void Usuwanie_Click(object sender, RoutedEventArgs e)
    {
        textbox.Text = "";
    }

w rezultacie w polu texbox.Text masz pusty ciąg znaków, który próbujesz konwertować na typ double.
Spróbuj
var originalNumber = double.Parse( string.IsNullOrEmpty( textbox.Text)?"0":textbox.Text);

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0