none
textbox'lar arasında ardaşık işlemler RRS feed

  • Soru

  • Öncelikle herkese merhaba, 

    Tasarlanmış olan form üzerinde yer alan textbox'lar arasında, buton'a bağlı olmadan belirli sıra ile birbirleri nin değerlerini kullanarak hesaplama yapan bir form tasarımı üzerinde çalışıyorum fakat istediğim gibi çalıştıramadım.

    Şu şekilde bir çalışma düzeni oluşturmayak istiyorum

    textbox1 * textbox2 / 100 * textbox3/ 1000 = textbox4.

    textbox 1 ve textbox2 ye girilen değer 100 'e bölünüp textbox 3 değeri ile çarpılıp 1000'e bölünerek textbox 4 ün textine yazılacak

    yardımlarınız için  şimdiden teşekkür ederim

    Saygılar

    1 Aralık 2020 Salı 06:34

Yanıtlar

  • textChanged eventi formun ilk açılış esnasındada çalıştığı ve o aşamada tüm textboxlarınız boş olduğu için hata vermesi normal.

    try bloğu içerisine alabilrisiniz.

    Ayrıca sayısal işlemler için textbox kullanmak pek doğru bir yöntem değil. numericUpDown kullanabilirsiniz. yada textboxlara girilen her karakterin sayısal değer olduğunu doğrulamanız gerekir.

      private void hesapla()
            {
                try
                {
                    int sayi1 = int.Parse(textBox1.Text);
                    int sayi2 = int.Parse(textBox2.Text);
                    int sayi3 = int.Parse(textBox3.Text);
    
                    decimal sonuc = (decimal)(((sayi1 * sayi2) / 100) * sayi3) / 1000;
    
                    textBox4.Text = sonuc.ToString();
                }
                catch
                {
    
                }
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                hesapla();
            }
    
            private void textBox1_TextChanged(object sender, EventArgs e)
            {
                hesapla();
            }
    
            private void textBox2_TextChanged(object sender, EventArgs e)
            {
                hesapla();
            }
    
            private void textBox3_TextChanged(object sender, EventArgs e)
            {
                hesapla();
            }


    Sorunuzun yanıtı bu ise "Yanıt Olarak Öner" olarak işaretleyin, eğer faydalı bir yorum ise "Oy Ver"erek forumun işleyişine katkıda bulunabilirsiniz

    • Yanıt Olarak İşaretleyen Atlass88 1 Aralık 2020 Salı 09:06
    1 Aralık 2020 Salı 08:51

Tüm Yanıtlar

  • Merhaba, aşağıdaki kodu dener misiniz?

    Textboxa girdiğiniz sayılar tamsayı değilse, sayi1,sayi2,sayi3'üde decimal yapabilirsiniz.

    int sayi1 = int.Parse(textBox1.Text);
    int sayi2 = int.Parse(textBox2.Text);
    int sayi3 = int.Parse(textBox3.Text);
    
    decimal sonuc = (decimal)(((sayi1 * sayi2)/100)*sayi3)/1000;
    
    textBox4.Text = sonuc.ToString();

    _______________________________________________________

    Sorunuzun yanıtı bu ise "Yanıt Olarak Öner" olarak işaretleyin, eğer faydalı bir yorum ise "Oy Ver"erek forumun işleyişine katkıda bulunabilirsiniz



    1 Aralık 2020 Salı 06:52
  • Yanıt için teşekkür ederim.

    kod bloğunda " 

    System.FormatException: 'Giriş dizesi doğru biçimde değildi.' uyarısını Exception Thrown olarak veriyor.

    Öneri kodunuzu textbox1_textChanged eventine girdim. Uygulamayı run edince formu direkt olarak kapatıyor.

    1 Aralık 2020 Salı 08:07
  • textChanged eventi formun ilk açılış esnasındada çalıştığı ve o aşamada tüm textboxlarınız boş olduğu için hata vermesi normal.

    try bloğu içerisine alabilrisiniz.

    Ayrıca sayısal işlemler için textbox kullanmak pek doğru bir yöntem değil. numericUpDown kullanabilirsiniz. yada textboxlara girilen her karakterin sayısal değer olduğunu doğrulamanız gerekir.

      private void hesapla()
            {
                try
                {
                    int sayi1 = int.Parse(textBox1.Text);
                    int sayi2 = int.Parse(textBox2.Text);
                    int sayi3 = int.Parse(textBox3.Text);
    
                    decimal sonuc = (decimal)(((sayi1 * sayi2) / 100) * sayi3) / 1000;
    
                    textBox4.Text = sonuc.ToString();
                }
                catch
                {
    
                }
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                hesapla();
            }
    
            private void textBox1_TextChanged(object sender, EventArgs e)
            {
                hesapla();
            }
    
            private void textBox2_TextChanged(object sender, EventArgs e)
            {
                hesapla();
            }
    
            private void textBox3_TextChanged(object sender, EventArgs e)
            {
                hesapla();
            }


    Sorunuzun yanıtı bu ise "Yanıt Olarak Öner" olarak işaretleyin, eğer faydalı bir yorum ise "Oy Ver"erek forumun işleyişine katkıda bulunabilirsiniz

    • Yanıt Olarak İşaretleyen Atlass88 1 Aralık 2020 Salı 09:06
    1 Aralık 2020 Salı 08:51
  • Özverili ve açıklayıcı yanıtlarınız için teşekkürler. 

    Farklı bir yol izlemekte fayda var dediiniz gibi. Form tasarımım oldukça karmaşık bir hesaplama dizesinden meydana geliyor. Çıkarttığım formülasyonu  tekrardan dizayn edim dediğiniz gibi şekillendirmeye çalışacağım.

    iyi çalışmalar

     

    1 Aralık 2020 Salı 09:17