none
C# Forum Herhangi Bir Koşul Sağlanmadığında Devam Etmesi İçin RRS feed

  • Soru

  • Merhaba,

    C# öğreniyorum da program normalde çalışıyor text içerisine veri girmediğim zaman "System.FormatException: 'Giriş dizesi doğru biçimde değildi.'" diye hata veriyor text e veri yazdığımda sorun yok bu durumda text e veri girilmediğinde programdan atmaması için ignore yapacak bir kod var mı?

    27 Şubat 2020 Perşembe 09:26

Yanıtlar

  • Sorununuz o alana veri girilip girilmemesi degil yalnızca, öyle olsaydi basitçe:

    if (string.IsNullOrEmpty(textBox1.Text)) {
       return;
    }

    yazabilirdiniz. Oysa mesajda da açık sekilde söylediği gibi, girilen ya da giremeyen metin doğru bicimde degil. Asagidaki kodunuza bakınca double'a çevirmeye calisiyorsunuz, yani girilen (ya da girilmeyen metin) double'a çevrilebilecek bir metin degil. Aslında ihtiyacınız da double degil decimal.

    if (decimal.TryParse(textBox1.Text, out decimal fiyat))
    {
    	// int.TryParse(textBox4.Text, out int adet);  ADET İÇİN
    	decimal toplam = fiyat * 1;
    	decimal kdv = toplam *
    	(radioButton1.Checked ? 0.01M
    	: radioButton2.Checked ? 0.08M
    	: radioButton3.Checked ? 0.18M
    	: 0M);
    	decimal toplamTutar = toplam + ((checkBox1.Checked ? 1 : -1) * kdv);
    
    	textBox3.Text = kdv.ToString("C", new CultureInfo("tr-TR"));
    	textBox5.Text = toplamTutar.ToString("C", new CultureInfo("tr-TR"));
    }
    Not: Arada toplam = fiyat * 1; gereksiz aslında. Dogrudan toplam yerine fiyat kullanmanız daha mantıklı.




    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.





    27 Şubat 2020 Perşembe 11:05
    Yanıtlayıcı

Tüm Yanıtlar

  • Koşul sağlanmadığı takdirde koşul satıları atlanarak işlem devam eder zaten. Kodunuzu paylaşabilir misiniz?
    27 Şubat 2020 Perşembe 09:33
  • private void button1_Click(object sender, EventArgs e)
            {
                double fiyat = Convert.ToDouble(textBox1.Text);
              //  double adet = Convert.ToDouble(textBox4.Text);  ADET İÇİN
                double toplam = fiyat * 1;
                double kdv = 0;
                if (radioButton1.Checked)
                {
                    kdv = toplam * 0.01;
                }
                else if (radioButton2.Checked)
                {
                    kdv = toplam * 0.08;
                }
    
                else if (radioButton3.Checked)
                {
                    kdv = toplam * 0.18;
                }
                if (checkBox1.Checked == true)
                {
    
                    double toplamTutar = toplam + kdv;
    
                    textBox3.Text = kdv + " ₺";
                    textBox5.Text = toplam + kdv + " ₺";
                }
    
                if (checkBox1.Checked == false)
                {
    
                    double toplamTutar = toplam - kdv;
    
                    textBox3.Text = kdv + " ₺";
                    textBox5.Text = toplam - kdv + " ₺";
                }

    normalde devam ediyor alta geçiyor da textbox a veri girmediğim zaman yapıyor bunu

    27 Şubat 2020 Perşembe 09:37
  • En başta textboxun içinde veri olup olmadığını kontrol ettirirseniz probleminiz çözülür
    27 Şubat 2020 Perşembe 09:45
  • genel olarak veri girilmezse es geç diye bir komut yok mu acaba?
    27 Şubat 2020 Perşembe 09:49
  • genel olarak veri girilmezse es geç diye bir komut yok mu acaba?
    if(textBox1.Text != "")
    {
    //KODUN
    }

    27 Şubat 2020 Perşembe 09:59
  • Sorununuz o alana veri girilip girilmemesi degil yalnızca, öyle olsaydi basitçe:

    if (string.IsNullOrEmpty(textBox1.Text)) {
       return;
    }

    yazabilirdiniz. Oysa mesajda da açık sekilde söylediği gibi, girilen ya da giremeyen metin doğru bicimde degil. Asagidaki kodunuza bakınca double'a çevirmeye calisiyorsunuz, yani girilen (ya da girilmeyen metin) double'a çevrilebilecek bir metin degil. Aslında ihtiyacınız da double degil decimal.

    if (decimal.TryParse(textBox1.Text, out decimal fiyat))
    {
    	// int.TryParse(textBox4.Text, out int adet);  ADET İÇİN
    	decimal toplam = fiyat * 1;
    	decimal kdv = toplam *
    	(radioButton1.Checked ? 0.01M
    	: radioButton2.Checked ? 0.08M
    	: radioButton3.Checked ? 0.18M
    	: 0M);
    	decimal toplamTutar = toplam + ((checkBox1.Checked ? 1 : -1) * kdv);
    
    	textBox3.Text = kdv.ToString("C", new CultureInfo("tr-TR"));
    	textBox5.Text = toplamTutar.ToString("C", new CultureInfo("tr-TR"));
    }
    Not: Arada toplam = fiyat * 1; gereksiz aslında. Dogrudan toplam yerine fiyat kullanmanız daha mantıklı.




    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.





    27 Şubat 2020 Perşembe 11:05
    Yanıtlayıcı
  • teşekkür ederim bu text için olan sorunumu çözdü ama programın genelindeki olay için sorun oluşturuyor yine başka text için yapıyor şimdi de
    27 Şubat 2020 Perşembe 11:07
  • teşekkür ederim bu text için olan sorunumu çözdü ama programın genelindeki olay için sorun oluşturuyor yine başka text için yapıyor şimdi de
    Hayir o sorununuzu çözmez, yaniliyorsunuz, mesaj öyle demiyor. Oraya Ahmet yazmayı deneyin, çözülmediğini gorursunuz.


    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.

    27 Şubat 2020 Perşembe 11:10
    Yanıtlayıcı