• 09-11-2013, 13:37:59
    #1

    Merhabalar..


    1. Sorum :
    TextBox'ıma küsüratlı sayı girilsin istiyorum fakat; sadece normal sayılar ile virgüllü ondalıklı sayılar kabul edilsin istiyorum.

    Yani;

    TextBox'ıma 70 girildiği zaman, textbox bunu kabul etsin.
    TextBox'ıma 70,25 girildiğinde sistem bunu da kabul etsin.

    Ama;

    TextBox'a 70.25 girildiği zaman textbox bunu kabul etmesin istiyorum

    - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - --- - - - - - -- -

    2. Sorum

    Ayrıca bir diğer sorum da şu :

    TextBox'ta sayı aralığı sınırlaması yapmak istiyorum.

    Örnek vermem gerekirse :

    TextBox'a 0 ile 100 arasında bir sayı girilmesini isteyeceğim.
    Eğer 0'dan düşük değerde bir sayı girilirse yada 100'den daha büyük bir sayı girilirse programın anlık olarak, MessageBox ile,

    "Lütfen 0 ile 100 arası bir değer giriniz!" şeklinde uyarı vermesini istiyorum.

    Her bir textBox için bu nasıl yapılır?
    Eğer elimde birden fazla textBox var ise nasıl yapılır?
  • 09-11-2013, 13:56:51
    #2
    text box bulundugu stıra requare kontrolu koy orda bu iki istediğini aynı kodda yapabilirisin..
  • 17-11-2013, 14:19:40
    #3
    yunusdogan adlı üyeden alıntı: mesajı görüntüle
    text box bulundugu stıra requare kontrolu koy orda bu iki istediğini aynı kodda yapabilirisin..
    2. sorduğum soruyu if ile kontrol ettirebilir miyim acaba? Bu konu hakkında bilginiz var mı?

    Değerleri kullanıcıdan double olarak alıyorum.

    Dolayısıyla saçmada olsa;


    if (textBox10.Text > 100)
    {
    MessageBox.Show("100den büyük değerler girmeyiniz!");
    }


    şeklinde bir şey yazmak geldi aklıma doğal olarak VStudio bunu kabul etmedi. Çünkü operatör işareti, form uygulamalarında string ve double gibi değerlerler birlikte kullanılamıyor.

    Daha önce verdiğiniz cevap için teşekkür ediyorum ama; İf ile yapabileceğim alternatif bir çözümü var mıdır bu işin. Ben onu merak ediyorum.
  • 17-11-2013, 16:13:29
    #4
    2.sorunun cevabı


     try
                {
                    double sayi = Convert.ToDouble(txtSayi.Text);
    
                    MessageBox.Show(sayi.ToString());
    
                    if (sayi > 100 || sayi < 0)
                        MessageBox.Show("Lütfen 0 ile 100 arası bir değer giriniz!");
                    else
                        MessageBox.Show("TMMm");
                }
                catch (Exception ex )
                {
    
                    MessageBox.Show(ex.Message);
                }
  • 17-11-2013, 16:20:25
    #5
    1. Soru
    Bunu IndexOf metoduyla arayarak yapabilirsin.

    Kullanımı :
    string degiskenAdi = "ali";
    //degiskenAdi.IndexOf(buraya char değer giriyoruz); eğer o char değişken varsa bize sıra numarasını yoksa -1 sayısını döndürür.
    degiskenAdi.IndexOf('.'); // Geriye -1 dönecek.

    Yani
    Alıntı
    if(textbox1.Text.IndexOf('.').ToString()!="-1"){

    // Eğer . varsa olacak işlemler

    }
    2. Soru
    Yapman gereken Convert.ToInt32(stringDegisken); metoduyla textbox da yazılan ifadeyi int e çevirip ardından kontrol etmek.

    Yani if(Convert.ToInt32(textbox2.Text>100)) diyip 100 den büyük olup olmadığını kontrol edebilirsin.

    Tavsiyem bunlardan yola çıkarak kendin yapman. Ama yapamadım dersen diye örnek proje hazırladım. Aşağıdaki adresten indirebilirsin. Visual studio 2012 ile hazırlanmıştır. Kolay gelsin.

    http://www.solidfiles.com/d/8ebc1b760d/

    Proje içindeki kodların tamamı :
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace pcmania
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void textBox1_TextChanged(object sender, EventArgs e)
            {
    
                if (textBox1.Text.IndexOf('.').ToString()!="-1") {
    
                    MessageBox.Show("Hatalı ifade girdiniz");
                    textBox1.Text = "";
                
                }
            }
    
            private void textBox2_TextChanged(object sender, EventArgs e)
            {
                try
                {
                    int sayi = Convert.ToInt32(textBox2.Text);
                    if (sayi > 100 || sayi < 0) {
    
                        MessageBox.Show("Sayı 0 dan küçük 100 den büyük olamaz");
                        textBox2.Text = "";
                    }
                }
                catch {
                    textBox2.Text = "";
                    MessageBox.Show("Yalnızca sayı giriniz");
                    
                }
            }
        }
    }
    Integer'a göre yaptım ben. Değişken ve convert edilecek veri tipini değiştirip double'a çevirebilirsin.


    Eğer textbox1'de yalnızca double değerler girilsin istiyorsan yapman gereken :

     if (textBox1.Text.IndexOf('.').ToString()!="-1") {
    
                    MessageBox.Show("Hatalı ifade girdiniz");
                    textBox1.Text = "";
                
                }
    Bu kodu şununla değiştirmek :

     try{
    
    double sayi = Convert.ToDouble(textbox1.Text);
    
    }catch{
    
    MessageBox.Show("Yalnızca double değer giriniz");
    
    textbox1.Text="";
    
    }
  • 17-11-2013, 20:05:52
    #6
     private void txtAdet_TextChanged(object sender, EventArgs e)
            {
                try
                {
                    if (int.Parse(txtAdet.Text) < 1 || int.Parse(txtAdet.Text) > 100)
                    {
                        MessageBox.Show("Lütfen 1 ile 100 arasında bir sayı giriniz.");
                     
                    }
                    else
                    {
                  MessageBox.Show("Geçerli bir sayı girdiniz.");
                     
    
                        }
                    }
                  }
                catch
                {
    
                  MessageBox.Show("Lütfen 1 ile 100 arasında bir sayı giriniz.");
                     
                }
            }
  • 20-12-2013, 14:49:51
    #7
    Arkadaşlar ellerinize sağlık ama; 2. soruyu en az 8-9 textBox'a aynı anda uygulamak istiyorum. Dediğiniz gibi yaparsam her birine tek tek yazmak zorunda kalıcam bunları. Ayrıca siz kodları try-catch mantığıyla verdiğiniz için ben her bir rakam girişimde MessageBox uyarı veriyor.
  • 20-12-2013, 20:21:53
    #8
    Bir form oluştur ve contructor (yapıcı metod)'unu aşağıdaki şekilde değiştir. Forma kaç tane textbox atarsan at hepsi için kontrolü gerçekleştirmiş olacaksın.

    public Form1()
            {
                InitializeComponent();
                foreach (Control item in this.Controls)
                {
                    if (item is TextBox)
                    {
                        item.TextChanged += (o, e) =>
                        {
                            if (string.IsNullOrEmpty(item.Text))
                            {
                                return;
                            }
                            try
                            {
                                if (item.Text.IndexOf('.') != -1)
                                {
                                    MessageBox.Show("Girdiğiniz sayı geçerli formatta değildir!\nLütfen . (nokta) işareti kullanmayınız!");
                                    return;
                                }
    
                                int sayi = int.Parse(item.Text);
                                if (sayi > 100 || sayi < 0)
                                {
                                    MessageBox.Show("Girdiğiniz sayı 0 ile 100 arasında olmalıdır!");
                                    item.Text = "";
                                }
                            }
                            catch (Exception ex)
                            {
                                MessageBox.Show("Beklenmeyen hata!\n" + ex.ToString());
                            }
                        };
                    }
                }
            }
  • 20-12-2013, 22:44:38
    #9
    Kimlik doğrulama veya yönetimden onay bekliyor.
    User kontrol ile yapmanı öneririm.