C# girilen değerin int olup olmadığını kontrol etmek

lawny

Decapat
Katılım
13 Nisan 2021
Mesajlar
527
Makaleler
3
Çözümler
1
Merhaba, 2 textbox belirledim. Birisi bölünen diğeri ise bölen. Kullanıcı 2 yere de giriyor ve kalanı var mı yok mu kontrol edilmesini sağlıyor. Sorunsuz çalışıyor yaptığım tüm uygulamalar. Ancak int dışında (mesela string) bir değer girilirse (harf vb.) Oyundan atıyor. (Doğal olarak.) Bunu nasıl önleyebilirim? Mesela oyundan atmak yerine messagebox. Show("yanlış değer girdiniz"); yapsın istiyorum. Şimdiden teşekkür ederim.
 
Son düzenleyen: Moderatör:
Merhaba, 2 textbox belirledim. Birisi bölünen diğeri ise bölen. Kullanıcı 2 yere de giriyor ve kalanı var mı yok mu kontrol edilmesini sağlıyor. Sorunsuz çalışıyor yaptığım tüm uygulamalar. Ancak int dışında (mesela string) bir değer girilirse (harf vb.) Oyundan atıyor. (Doğal olarak.) Bunu nasıl önleyebilirim? Mesela oyundan atmak yerine messagebox. Show("yanlış değer girdiniz"); yapsın istiyorum. Şimdiden teşekkür ederim.
Textbox'da ki değerleri otomatik mi kontrol ediyor, yoksa bir butona basıldığında mı?
 
C#:
string girilen = "";     //Gelen veri bu değişkenin değerini alır.
if (!Int32.TryParse(girilen, out int sayi))
{
    MessageBox.Show($"Geçersiz bir sayı girdiniz: {girilen}");
}
else
{
    MessageBox.Show($"Geçerli bir sayı girdiniz: {sayi}");
}

Bu tarz bir kodun işlevi görmesi lazım. Mantık bu şekilde.
 
Son düzenleme:
[CODE lang="csharp" title="C#"]//x işlem yapılmak istenilen değişken olmak üzere

var t = GetType(x);
if (!t.Equals(typeof(int))){
MessageBox.Show("yanlış değer girdiniz");
return;
}[/CODE]

Denemedim fakat şunun işe yarayacağını düşünüyorum.
 
Convert. ToInt32(TextBlock. Text) yapmayı denediniz mi? Oyundan atmaz.

İşte TextBox'a INT dışında değer yazınca atmaması sağlamak istiyorum, zaten bu şekilde ayarlı :)

Textbox'daki değerleri otomatik mi kontrol ediyor, yoksa bir butona basıldığında mı?

Butona basıldığında.

C#:
string girilen = ""; //Gelen veri bu değişkenin değerini alır.
if (!Int32.TryParse(girilen, out int sayi))
{
 MessageBox.Show($"Geçersiz bir sayı girdiniz: {girilen}");
}
else
{
 MessageBox.Show($"Geçerli bir sayı girdiniz: {sayi}");
}

Bu tarz bir kodun işlevi görmesi lazım. Mantık bu şekilde.

Deneyeceğim.

[CODE lang="csharp" title="C#"]//x işlem yapılmak istenilen değişken olmak üzere

var t = GetType(x);
if (!t.Equals(typeof(int))){
MessageBox.Show("yanlış değer girdiniz");
return;
}[/CODE]

Denemedim fakat şunun işe yarayacağını düşünüyorum.

Henüz öğrenmediğim birçok şey içeriyor, karışık gibi geldi :) yine de teşekkür ederim
 
Son düzenleyen: Moderatör:
Bence kesinlikle regex kullan. Kullanımına alış. Bir çok kontrolü regex sayesinde yapabilirsin. İleride muhakkak işine yarayacaktır.
şu şekilde;
C#:
if(!Regex.IsMatch(deger, "^[0-9]*$)) {

// deger ifadesinde rakamdan başka değerler mevcut.

}

kullanımı ise, [] içerisine istenilen kuralı yazarız. Mesela sadece harf girmesini istersen, [a-zA-Z] yaparsın. *$ kısmı ise string içerisini karakter karakter kontrol etmeni sağlar. yazmazsan hatırladığım kadarıyla ilk karaktere bakıyordu. Bu tür kullanımları internetten bakanı tavsiye ederim.
 
Bence kesinlikle regex kullan. Kullanımına alış. Bir çok kontrolü regex sayesinde yapabilirsin. İleride muhakkak işine yarayacaktır.
şu şekilde;
C#:
if(!Regex.IsMatch(deger, "^[0-9]*$)) {

// deger ifadesinde rakamdan başka değerler mevcut.

}

kullanımı ise, [] içerisine istenilen kuralı yazarız. Mesela sadece harf girmesini istersen, [a-zA-Z] yaparsın. *$ kısmı ise string içerisini karakter karakter kontrol etmeni sağlar. yazmazsan hatırladığım kadarıyla ilk karaktere bakıyordu. Bu tür kullanımları internetten bakanı tavsiye ederim.
Çok teşekkür ederim. Araştıracağım.
 
Bir textbox'un yalnızca rakamları kabul etmesi için o textbox'un KeyPress event'ine şu kodu yaz:
Textbox, rakam ve Backspace dışındaki tuşları kabul etmeyecektir.
C#:
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    byte backspace = (byte) e.KeyChar; //8
    if (!char.IsDigit(e.KeyChar) & backspace != 8)
        e.Handled=true;
}
Bu event, o textbox'a klavyeden her karakter girildiğinde tetiklenir.
Char'ın IsDigit yöntemi, girilen karakterin rakam olup olmadığını denetler. Girilen karakter, bir rakam değil ise e.Handled özelliği true ayarlanarak, olayın işlenmesi engellenir; rakam dışında kalanlar kutuya yazılmaz, yalnızca rakamlar kabul edilir.

Backspace'yi ise girileni silmek için kabul etsin. Backspace'nin karakter kodu 8'dir.
 
Son düzenleme:
Arkadaşlar olay çok basitmiş. try cash kullanmam yetiyormuş. Yine de hepinize teşekkür ederim. Aynı sorunu yaşayanlar try'a komutları yazabilir, cash'a hata alınınca ne yapacağını belirtebilir.
 
Son düzenleyen: Moderatör:

Geri
Yukarı