Wczytywanie i późniejsza edycja stanu TextBox'ów. WPF

0

Mam nowy problem.
Problem zaczyna się gdy włączę ponownie program. (W TXB_1 wyświetla się poprzedni wynik, więc pół biedy), ale gdy napiszę np.5 i kliknę "+" bądź "-" program kasuje poprzedni wynik i wstawia 5. Powinno być tak, że jeżeli ostatni wynik wynosi 10, to po kliknięciu "5", następnie "+" powinno być wyświetlone "15".
Później już wszystko idzie normalnie, ale zależy mi na ciągłości.
kod:

 
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 skarbonka
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
        double a; //liczba wpisana przez nas       
        double result = 0;
        private void Dodawanie_Click(object sender, RoutedEventArgs e)
        {
            a = double.Parse(TXB_2.Text);
            result += a;
            TXB_1.Text = (result.ToString());
            TXB_2.Text = "";
        }
 
        private void Odejmowanie_Click(object sender, RoutedEventArgs e)
        {
            a = double.Parse(TXB_2.Text);
            result -= a;
            TXB_1.Text = (result.ToString());
            TXB_2.Text = "";
        }
 
        private void Usuwanie_Click(object sender, RoutedEventArgs e)
        {
            TXB_1.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_1.Text = TXB_1.Text + "9";
        }
 
        private void B0_Click(object sender, RoutedEventArgs e)
        {
            TXB_2.Text = TXB_2.Text + "0";
        }
 
        private void skarbonka_Closed(object sender, System.EventArgs e)
        {
            TXB_1.Text = Properties.Settings.Default.textbox;
            Properties.Settings.Default.Save();
        }
 
        private void skarbonka_Load(object sender, RoutedEventArgs e)
        {
            TXB_1.Text = Properties.Settings.Default.textbox;
                                                                                         //wydaje mi się że tutaj coś powinno być
        }
    }
}
 

screeny:
0a36d9d162.png
e1652c268f.png

0

jak bedziesz miec 1000 takich przyciskow to zrobisz 1000 funkcji w ktorej jedyna zmiana jest zmiana liczby?

Poczytaj o DRY.

program Ci wczytuje wartosc do TXB_1 (powinienes lepiej to nazwac)

popatrzmy na funkcje +

        private void Dodawanie_Click(object sender, RoutedEventArgs e)
        {
            a = double.Parse(TXB_2.Text);
            result += a;
            TXB_1.Text = (result.ToString());
            TXB_2.Text = "";
        } 

txb_2 zawiera 5.
a bedzie mialo 5
result bedzie miao 5
do text_1.text przypisujesz wartosc 5
czyscisz co jest w txb_2

jezeli chcesz zeby z 10 zrobilo 15 to musisz te wartosci dodac a nie nadpisac

void AddNumberToControl(TextBox textbox, string value)
{
  var originalNumber = double.Parse(textbox.Text, CultureInfo.InvariantCulture);
  var numberToAdd = double.Parse(value, CultureInfo.InvariantCulture);
  var sumOfNumbers = originalNumber + numberToAdd;
  textbox.Text = sumOfNumbers.ToString();
} 

teraz wystarczy ta funkcje wywolac w odpowiednim miejscu z odpowiednimi parametrami

0

@fasadin
Mam ten kod:

 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 = ""; //czyści TXB_2 

Niby wszystko ok, nie ma błędów, ale kiedy włączam aplikację to nie chce się nic dodać. Kiedy mam liczbę "0" i wpiszę "5" i kliknę przycisk dodawania,to nic się nie stanie.
Dopiero kiedy kliknę "5" i odejmowanie zrobione innym sposobem będę miał wynik "-5". potem dodawanie działa normalnie, do momentu gdy wpiszę np."6" i kliknę przycisk dodawania. Program zamiast 6 dodaje dalej 5!
Co robić?

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