Şimdi Ara

C# Key Press

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir (1 Mobil) - 1 Masaüstü1 Mobil
5 sn
10
Cevap
0
Favori
17.960
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • arkadslar c# da girilen texbox'a sadece rakam girilmesini istiyorum bunun için aşağıdaki keypress kodu için yeterlimidir.

    private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
    {

    //büyük kücük harf için
    if ((e.KeyChar >= (char)65) && (e.KeyChar<=(char)125))
    {
    e.Handled = true;
    MessageBox.Show ("lütfen sadece rakam giriniz");
    }

    // nokta gibi karakterler için

    if ((e.KeyChar >= (char)32) && (e.KeyChar<=(char)47))
    {
    e.Handled = true;
    MessageBox.Show ("lütfen sadece rakam giriniz");
    }


    }



    < Bu mesaj bu kişi tarafından değiştirildi by_serkk -- 29 Kasım 2008; 11:16:15 >



  • numeric olan char değerleri
    Char Decimal
    0----------48
    1----------49
    2----------50
    3----------51
    4----------52
    5----------53
    6----------54
    7----------55
    8----------56
    9----------57

    sadece numeric değerler ise char değerlerinin bunlar olmasını kontrol edeceksin.

    if ((e.KeyChar >= (char)48) && (e.KeyChar<=(char)57))
    {
    //sadece numeric değerler girebilir
    }

    tabi bunun yanonda enter ve backspace leride giriş olarak kabul edeceksen

    if (((e.KeyChar >= (char)48) && (e.KeyChar<=(char)57)) || (e.KeyChar==(char)8) || (e.KeyChar==(char)13 ))
    {
    //sadece numeric değerler girebilir
    }
    tüm char değerleri için buraya bakabilirsin



    < Bu mesaj bu kişi tarafından değiştirildi darthridius -- 29 Kasım 2008; 12:14:13 >




  • pekı bunun sadece harf girilmesini istiyorsak nasıl yapariz
  • hmm şöyle bişey hatırlıyorum

    char.isDigit

    bunun değili iş görebilir

    eğer
    !(char.isDigit)
    girileni kabul et.
  • C# Bazı KeyPress ve KeyDown Kontrolleri İçin If Kodları

    //KeyPress eventinin içine yazılabilecek kodlar.
    if (char.IsLetter(e.KeyChar))
    {
    e.Handled = true;
    MessageBox.Show("Sadece Sayı Karakteri Girmelisiniz!");
    }

    if (Char.IsDigit(e.KeyChar) == false && e.KeyChar != ',')
    {
    e.Handled = true;
    MessageBox.Show("Sadece Sayı veya Virgül Karakterlerini Girebilirsiniz!");
    }

    if (Char.IsDigit(e.KeyChar) == false && e.KeyChar != '.')
    {
    e.Handled = true;
    MessageBox.Show("Sadece Sayı ve Nokta Karakterlerini Girebilirsiniz!");
    }


    if (Char.IsDigit(e.KeyChar) == false && e.KeyChar != '.' && e.KeyChar != ',')
    {
    e.Handled = true;
    MessageBox.Show("Sadece Sayı, Nokta veya Virgül Karakterlerini Girebilirsiniz!");
    }

    if (Char.IsDigit(e.KeyChar) == false && e.KeyChar != '.' && e.KeyChar != ',')
    {
    e.Handled = true;
    }

    if (textBox1.Text.Contains(",") && e.KeyChar == ',')
    {
    MessageBox.Show("Virgül Karakterini Sadece Bir Defa Kullanabilirsiniz");
    }

    //KeyDown eventine yazılabilecek kodlar.
    if (Char.IsDigit(e.KeyChar) == '\b')
    {
    e.Handled = true;
    }

    if (e.KeyCode == Keys.Delete)
    {
    MessageBox.Show("Delete Tuşunu Kullanamazsınız");
    }



    < Bu mesaj bu kişi tarafından değiştirildi coderMX -- 28 Aralık 2008; 12:23:26 >




  • Merhabalar eger güvenli ve kolay kullanımlı bir program yapmak istiyorsanız her türlü acigi ve mantigi bilmeniz gerekli.Verilen kodların bazıları mantıksal olarak yanlış şu şekilde örneğin bir kodun ornegini verecegim!

    if (char.IsLetter(e.KeyChar))
    {
    e.Handled = true;
    MessageBox.Show("Sadece Sayı Karakteri Girmelisiniz!"); // bu kod sadece sayı girişimi sitiyor sizce hayır a,b,c,d.......vs harf girdiginizde mesaj verecektir yanliz bu kod shit+üst karakter ve alt gr+ üst karakter gorevi yapmiyor yani bir Tc no alanina harf girdigizde hata verecek ama "shit+üst karakter ve alt gr+ üst karakter" girdiginizde hata vermiyecektir bu bir mantıksal hatadır ... bu sorun nasıl çözürlür işlevsel olarak asagiya yaziyorum!
    }


    --------------- Keypress eventine ..

    if(char.isnumber(e.keychar)) //bu sekilde yazdiginizda sadece sayıgirebilirsiniz yanlis girdiginizde silemezsiniz bunun için gerekli kod
    if(char.isnumber(e.keychar) || e.keychar==8) // bunu yazginizda backspace tuşu çalışcaktır 8 tuşu backspace tuşunun ASCII kodudur
    {
    e.handled=false;
    else
    {
    e.handled=true;
    Messagebox.show("sadece sayı girebilirsin");
    {
    }
    }



    SAHTE PROGRAMCI SUNDU AMACIM POROGRAM YAZMAK DEGIL HATA BULMAK
    }




  • System.Text.RegularExpressions.Regex
    class ini kullanabilirsin cok karmasik islemler de yapabilirsin ama biraz syntax i tuhaftir :) alismak zaman aliyor tabi ifadeleri ogrenmek icin.

    2008 de maskedtextbox var ayrica basit islemler icin kullanabilirsin (vs 2005 de var mi bilmiyorum). telefon numarasi posta kodu icin v.b.

    numericupdown kontrolunu de kullanabilirsin (tam yada ondalik degerler girmek icin --para miktari gibi--)
  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
  • arkadaşlar bu işinizi belki görür KeyPress Eventine yazarsanız Sanırım Derdiniz Çözülür
    ayrıca çok rahat oluyor ve yanlızca bir virgül kabul ediyor hatası varsa cevap yazın mutlaka

    public class NumericText
    {

    public static void NumericTextControl(object sender , KeyPressEventArgs e)
    {
    TextBox t = sender as TextBox;
    int x=0;
    for (int i = 0; i < t.Text.Length; i++)
    {
    if (t.Text.Substring(i, 1).ToString() == ",")
    x += 1;
    }
    switch (e.KeyChar)
    {
    case (char)48:
    case (char)49:
    case (char)50:
    case (char)51:
    case (char)52:
    case (char)53:
    case (char)54:
    case (char)55:
    case (char)56:
    case (char)57:
    e.Handled = false;
    break;
    //virgül
    case (char)44:
    if (x != 1)
    {
    x+=1;
    e.Handled = false;
    break;
    }
    e.Handled = true;
    break;
    //backspace
    case (char)8:
    e.Handled = false;
    break;
    default:
    e.Handled = true;
    break;
    }
    }
    }




  • Biraz geçmiş ama bunlar çok uzun yol.
    Charların int karşılığını tek tek yazmaya gerek yok;
    A'dan Z'ye;
    (int)Keys.A---(int)Keys.Z
    arasında ise e.Handled=true;
    değilse ve aynı zamanda enter ve back de değilse
    e.Handled=false; yaparsın. veya aynı şekilde sayıları da yapabilirsin.
  • if (Char.IsDigit(e.KeyChar) == false && e.KeyChar != ',' && e.KeyChar != 8)
    {
    // Back space ekli hali virgul ve numara disinda kodlama yasakli.
    e.Handled = true;
    MessageBox.Show("Sadece Sayı veya Virgül Karakterlerini Girebilirsiniz!");
    }



    < Bu mesaj bu kişi tarafından değiştirildi Mult!_61 -- 4 Eylül 2011; 2:13:04 >
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.