C# Development

C#’ta Sadece Sayısal Metin Kutuları Oluşturmanın Üç Yolu

Spread the love

C# uygulamanızdaki metin kutularının yalnızca sayısal girdi kabul etmesini sağlamak, veri bütünlüğü ve olumlu bir kullanıcı deneyimi için çok önemlidir. Bu, geçersiz girişleri önler ve veri işlemeyi basitleştirir. Bu makale, her biri farklı esneklik ve karmaşıklık seviyeleri sunan bu hedefe ulaşmak için üç etkili yöntemi ele almaktadır.

İçindekiler

KeyPressEventArgs ile Girdi Doğrulama

Bu yaklaşım, metin kutusunda hangi tuşlara izin verileceği üzerinde doğrudan kontrol sağlar. Basılan tuşun bir rakam (0-9) veya bir geri alma tuşu olup olmadığını kontrol etmek için KeyPress olayı işlenir.


private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    // Yalnızca rakamlar (0-9) ve geri alma tuşuna izin ver
    if (!char.IsDigit(e.KeyChar) && e.KeyChar != (char)8)
    {
        e.Handled = true; // Tuş basımını engelle
    }
}

Bu yöntem, basit tamsayı girdisini doğrulamak için özlü ve verimlidir. char.IsDigit(e.KeyChar), tuşun bir rakam olup olmadığını doğrular; e.KeyChar != (char)8 ise silme işlemi için geri alma tuşuna izin verir. e.Handled = true, rakam olmayan tuşların girilmesini engeller.

Esnek Doğrulama için Düzenli İfadelerin Kullanımı

Düzenli ifadeler, özellikle daha karmaşık sayısal formatları (örneğin, ondalık sayılar, bilimsel gösterim) işlerken güçlü ve uyarlanabilir bir çözüm sunar. Regex.IsMatch() yöntemi, metin kutusunun metninin tanımlanmış bir sayısal kalıba uygun olup olmadığını kontrol eder.


private void textBox2_TextChanged(object sender, EventArgs e)
{
    // Yalnızca rakamlar ve isteğe bağlı olarak bir ondalık nokta
    string pattern = @"^[0-9]*(.[0-9]+)?$";
    if (!Regex.IsMatch(textBox2.Text, pattern))
    {
        // Önceki geçerli değeri geri yükle veya metin kutusunu temizle. Burada hata işleme çok önemlidir.
        // Daha sağlam bir çözüm için, son geçerli değeri izlemeyi düşünün.
        textBox2.Text = textBox2.Text.Substring(0, textBox2.Text.Length - 1);
        textBox2.SelectionStart = textBox2.Text.Length; // İmleç konumunu ayarla
    }
}

@"^[0-9]*(.[0-9]+)?$" kalıbı, sıfır veya daha fazla rakamı ([0-9]*), isteğe bağlı olarak bir ondalık nokta ve bir veya daha fazla rakamı ((.[0-9]+)?) kabul eder. ^ ve $ işaretleri, tüm dizenin kalıpla eşleştiğinden emin olur. Girdi eşleşmezse, son karakter silinir; üretim uygulamaları için daha gelişmiş hata işlemeyi göz önünde bulundurun.

NumericUpDown Kontrolünden Faydalanma

Yerleşik NumericUpDown kontrolü, sayısal girdi için kullanıcı dostu ve basit bir çözüm sunar. Girişi doğal olarak sayısal değerlerle sınırlar ve artırma/azaltma düğmeleri ve aralık doğrulama gibi özellikler sağlar.


// Formunuza bir NumericUpDown kontrolü ekleyin (örneğin, numericUpDown1)
// Gerektiği gibi özellikleri ayarlayın (Minimum, Maksimum, OndalıkBasamakSayısı vb.)

// numericUpDown1.Value kullanarak değere erişin
int numericValue = (int)numericUpDown1.Value;

İhtiyaçlarınız onun yetenekleriyle uyumluysa bu en basit seçenektir. Doğrulamayı otomatik olarak işler ve net bir kullanıcı arayüzü sağlar. Bununla birlikte, son derece özelleştirilmiş doğrulama veya biçimlendirme gerektiren senaryolar için uygun olmayabilir.

En iyi yöntem, belirli gereksinimlerinize bağlıdır. Basit tamsayı girdisi için KeyPressEventArgs verimlidir. Karmaşık formatlar veya gelişmiş kullanıcı deneyimi için düzenli ifadeler veya NumericUpDown tercih edilir. Her zaman hata işlemeyi ve kullanıcı deneyimini göz önünde bulundurun.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir