C# - Değer Sınırlaması Getirme Sorunu

EKAya03

Hectopat
Katılım
7 Aralık 2014
Mesajlar
31
Daha fazla  
Cinsiyet
Erkek
if((Text_Sayi.Text != "") && (Bir == false))
{
SayiBir = int.Parse(Text_Sayi.Text);
Label_GirilenDegerler.Text = SayiBir + " + ";
Text_Sayi.Clear();
Bir = true;
}
else if ((Text_Sayi.Text != "") && (Bir == true))
{
SayiIki = int.Parse(Text_Sayi.Text);
Label_GirilenDegerler.Text += SayiIki + " + ";
Text_Sayi.Clear();
Iki = true;
}
else if((Text_Sayi.Text != "") && (Iki == true))
{
SayiUc = int.Parse(Text_Sayi.Text);
Label_GirilenDegerler.Text += SayiUc + " + ";
Text_Sayi.Clear();
Uc = true;
}
else if ((Text_Sayi.Text != "") && (Uc == true))
{
SayiDort = int.Parse(Text_Sayi.Text);
Label_GirilenDegerler.Text += SayiDort + " + ";
Text_Sayi.Clear();
Dort = true;
}
else if ((Text_Sayi.Text != "") && (Dort == true))
{
SayiBes = int.Parse(Text_Sayi.Text);
Label_GirilenDegerler.Text += SayiBes + " + ";
Text_Sayi.Clear();
Bes = true;
}
else if ((Text_Sayi.Text != "") && (Bes == true))
{
SayiAlti = int.Parse(Text_Sayi.Text);
Label_GirilenDegerler.Text += SayiAlti + " + ";
Text_Sayi.Clear();
Alti = true;
}
else if ((Text_Sayi.Text != "") && (Alti == true))
{
SayiYedi = int.Parse(Text_Sayi.Text);
Label_GirilenDegerler.Text += SayiYedi + " + ";
Text_Sayi.Clear();
Buton_Topla.Enabled = false;
}

Yedinci sayıyı okuduğu andan itibaren topla isimli butonu devre dışı bırakmak istiyorum ama nedense devre dışı bırakmıyor ve kullanmaya devam edebiliyorum o butonu. Yardımcı olabilecek varsa çok sevinirim.
 
Son düzenleyen: Moderatör:
7. sayıyı okuduğundan kastın 7. basamak olduğunda mı yoksa 7 farklı değer girildiğinde mi ?
O işlemin devam ettiği zaman olmasını istiyorsan değer girilen yerin eventinde TextChanged kısmına yaz.
O kod daha kısa yazılabilir gibime geliyor, çok fazla if var orda :D
 
Veri giriş işlemini for ile 7 defa döndürdükten sonra butonu kapatsan 3 satır kodla yazarsın.
 
Tamam. TextChanged'da denedim ama bir değişiklik olmadı onu da belirteyim bu arada. Teşekkür ederim ilginiz için.
 
Visual studio proje klasörünüzü paylaşın, yardımcı olayım. Bence siz if else bloğunun çalışma prensibini anlamamışsınız. O bloklar sırayla sorguya girer ve hangisi doğruysa çalışır. Diğer bloklar artık es geçilir. Sizin kullanmanız gereken döngü for döngüsü.
 
Son düzenleme:
If döngüsü yerine for döngüsü dediğim yanlışmış. Ben toplama işlemi zannettim o metodu. Eğer "1+2+3+4+5+6+7+" şeklinde girerseniz sorunsuzca + tuşu devre dışı kalıyor. Siz buttontik değeri 7 ise diye bir if bloğu eklemişsiniz. Doğru ama sadece dediğim gibi bir sayı bir toplama işareti girerseniz. + tuşuna 7 kere basın daha sayı girmeden button devre dışı kalıyor. Eşittir metodunuzu kontrol etmedim o da hata veriyordu. Ayrıca toplama yaptıktan sonra girdiğiniz değerler alttaki kutucuğa işliyor tekrar yukarıda işlem yapabilmek yerine.

Birazdan dışarı çıkacağım müsait olduğumda kodları düzeltmeye çalışırım.

İyi günler haftasonu müsait değildim. Size bu kodları hazırladım. Dört Beş gibi her işlem için yeni işlem için değişken oluşturmak yerine işlemsayısı değişkenini koydum. If olan yerlere işlemsayısı 7 olursa şunu uygula gibi kodları değiştirirseniz amacınıza ulaşırsınız. Kodlarda hatalar olabilir. Hataları bulmaya çalışın. Şu anki çalışma prensibi Windows 10'daki hesap makinasına benziyor. Virgül gibi bazı tuşları koymamışsınız. Ben de koymadım. Sadece koyduğunuz tuşlar için kodları yazdım. Kodları geliştirirsem tekrar yollarım.

Kod:
    public partial class Arayuz : Form
    {
        enum Operatör
        {
            Yok = 0,
            Topla = 1,
            Çıkart = 2,
            Çarp = 3,
            Böl = 4
        }

        bool sayıeklenecekmi = false;
        decimal işlem = 0;
        byte işlemsayısı = 0;
        string ifade;
        Operatör sonoperatör = Operatör.Yok;
        decimal sonsayı = 0;

        public Arayuz()
        {
            InitializeComponent();
            Text_Sayi.Text = "0";
            Text_Sayi.Select(1, 0);
        }

        private void Buton_Sifir_Click(object sender, EventArgs e)
        {
            if(sayıeklenecekmi && Text_Sayi.Text != "0")
                Text_Sayi.Text += "0";
            else
                Text_Sayi.Text = "0";

            sayıeklenecekmi = true;
        }

        private void Buton_Bir_Click(object sender, EventArgs e)
        {
            if (sayıeklenecekmi && Text_Sayi.Text != "0")
                Text_Sayi.Text += "1";
            else
                Text_Sayi.Text = "1";

            sayıeklenecekmi = true;
        }

        private void Buton_Iki_Click(object sender, EventArgs e)
        {
            if (sayıeklenecekmi && Text_Sayi.Text != "0")
                Text_Sayi.Text += "2";
            else
                Text_Sayi.Text = "2";

            sayıeklenecekmi = true;
        }

        private void Buton_Uc_Click(object sender, EventArgs e)
        {
            if (sayıeklenecekmi && Text_Sayi.Text != "0")
                Text_Sayi.Text += "3";
            else
                Text_Sayi.Text = "3";

            sayıeklenecekmi = true;
        }

        private void Buton_Dort_Click(object sender, EventArgs e)
        {
            if (sayıeklenecekmi && Text_Sayi.Text != "0")
                Text_Sayi.Text += "4";
            else
                Text_Sayi.Text = "4";

            sayıeklenecekmi = true;
        }

        private void Buton_Bes_Click(object sender, EventArgs e)
        {
            if (sayıeklenecekmi && Text_Sayi.Text != "0")
                Text_Sayi.Text += "5";
            else
                Text_Sayi.Text = "5";

            sayıeklenecekmi = true;
        }

        private void Buton_Alti_Click(object sender, EventArgs e)
        {
            if (sayıeklenecekmi && Text_Sayi.Text != "0")
                Text_Sayi.Text += "6";
            else
                Text_Sayi.Text = "6";

            sayıeklenecekmi = true;
        }

        private void Buton_Yedi_Click(object sender, EventArgs e)
        {
            if (sayıeklenecekmi && Text_Sayi.Text != "0")
                Text_Sayi.Text += "7";
            else
                Text_Sayi.Text = "7";

            sayıeklenecekmi = true;
        }

        private void Buton_Sekiz_Click(object sender, EventArgs e)
        {
            if (sayıeklenecekmi && Text_Sayi.Text != "0")
                Text_Sayi.Text += "8";
            else
                Text_Sayi.Text = "8";

            sayıeklenecekmi = true;
        }

        private void Buton_Dokuz_Click(object sender, EventArgs e)
        {
            if (sayıeklenecekmi && Text_Sayi.Text != "0")
                Text_Sayi.Text += "9";
            else
                Text_Sayi.Text = "9";

            sayıeklenecekmi = true;
        }

        private void Buton_Topla_Click(object sender, EventArgs e)
        {
            OperatörHesap(Operatör.Topla, " + ");
        }
      
        private void Buton_Cikar_Click(object sender, EventArgs e)
        {
            OperatörHesap(Operatör.Çıkart, " - ");
        }

        private void Buton_Carp_Click(object sender, EventArgs e)
        {
            OperatörHesap(Operatör.Çarp, " * ");
        }

        private void Buton_Bol_Click(object sender, EventArgs e)
        {
            OperatörHesap(Operatör.Böl, " : ");
        }

        private void Buton_Esittir_Click(object sender, EventArgs e)
        {
            try
            {
                string sonuç;
                if (işlemsayısı == 0)
                {
                    if (sonoperatör == Operatör.Yok)
                        sonuç = Text_Sayi.Text;
                    else
                        sonuç = İşlemHesapla(decimal.Parse(Text_Sayi.Text));
                }
                else
                {
                    sonsayı = decimal.Parse(Text_Sayi.Text);
                    sonuç = İşlemHesapla(işlem);
                }

                Text_Sayi.Text = sonuç;
                Label_GirilenDegerler.Text = "";
                işlem = 0;
                işlemsayısı = 0;
                sayıeklenecekmi = false;
            }
            catch (Exception ex)
            {
                Label_GirilenDegerler.Text = "";
                Text_Sayi.Text = ex.Message;
                sonoperatör = Operatör.Yok;
            }
        }

        private void OperatörHesap(Operatör operatör, string karakter)
        {
            try
            {
                if (işlemsayısı == 0)
                {
                    işlem = sonsayı = decimal.Parse(Text_Sayi.Text);

                    ifade = Label_GirilenDegerler.Text + sonsayı.ToString();
                    Label_GirilenDegerler.Text = ifade + karakter;
                    Text_Sayi.Text = işlem.ToString();
                    sayıeklenecekmi = false;
                    işlemsayısı++;
                    sonoperatör = operatör;
                }
                else if (sayıeklenecekmi == true)
                {
                    sonsayı = decimal.Parse(Text_Sayi.Text);

                    ifade = Label_GirilenDegerler.Text + sonsayı.ToString();
                    Label_GirilenDegerler.Text = ifade + karakter;
                    Text_Sayi.Text = İşlemHesapla(işlem).ToString();
                    sayıeklenecekmi = false;
                    işlemsayısı++;
                    sonoperatör = operatör;
                }
                else if (sonoperatör != operatör)
                {
                    Label_GirilenDegerler.Text = ifade + karakter;
                    sonoperatör = operatör;
                }
            }
            catch (Exception ex)
            {
                Label_GirilenDegerler.Text = "";
                Text_Sayi.Text = ex.Message;
                sonoperatör = Operatör.Yok;
            }
        }

        private string İşlemHesapla(decimal sayı)
        {
            try
            {
                if (sonoperatör == Operatör.Topla)
                    işlem = sayı + sonsayı;
                else if (sonoperatör == Operatör.Çıkart)
                    işlem = sayı - sonsayı;
                else if (sonoperatör == Operatör.Çarp)
                    işlem = sayı * sonsayı;
                else if (sonoperatör == Operatör.Böl)
                    işlem = sayı / sonsayı;

                return işlem.ToString();
            }
            catch (Exception e)
            {
                return e.Message;
            }
        }
    }
 
Son düzenleme:
Uyarı! Bu konu 9 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Geri
Yukarı