C# ErrorProvider Component Kullanımı



ErrorProvider componenti windows form uygulamalarında kullanıcıdan eğer değer alınıyorsa bu değerlerin kontrolü sonucu eğer bir hata var ise kullanıcıya hata döndürmek için kullanılır.

Örnek kullanım :

 if (Regex.IsMatch(nameTextBox.Text, @"^[a-zA-Z\s'.]{1-50}$"))
         errorProvider1.SetError(nameTextBox,"Hatalı isim!");

Görüldüğü gibi bu örnekte nameTextBoxkontrolüne girilen değer eğer regex'te belirtilen karakterler dışında ise "Hatalı isim!" hatası döndürmektedir.

Bu componente ait bazı property'ler:

Icon : Hata oluştuğunda çıkacak olan ikonun seçildiği property

BlinkStyle : Hatanın yanıp sönme şekli

BlinkRate : Hatanın yanıp sönme hızı

Bu component kullanarak ayrıca bir hata varsa o kontrole focus yapılması programın kullanım kolaylığı açısından önemli bir artıdır. Çünkü kullanıcı nerde hata yaptığını çok uzun formlarda aramak zorunda kalmayacaktır. Bunun için Focus() ve SelectAll() fonksiyonlarını kullanarak yapabiliriz.

Örnek kullanım:


 if (Regex.IsMatch(nameTextBox.Text, @"^[a-zA-Z\s'.]{1-50}$"))
         {
                  errorProvider1.SetError(nameTextBox,"Hatalı isim!");
                  nameTextBox.Focus();
                  nameTextBox.SelectAll();
          }
Ayrıca eğer hata ortadan kalktıysa bu componenti ortadan kaldırmak için değerini NULL yapmak yeterlidir. Yani :

errorProvider1.SetError(nameTextBox,"");
bu şekilde bu provider gözükmez.

GetError :

GetError metodu ile ekran üzerindeki herhangi bir konrolde hata olup olmadığı kontrolü yapılabilir. Bu metod o kontrolün hata mesajını döndürür eğer hata yok ise NULL döneceği için şu şekilde bir kontrol üzerinde hata olup olmadığı kontrol edilebilir.

String.IsNullOrEmpty(errorProvider1.GetError(nameTextBox));

Validation yapılırken kontrolün Validation Event kullanılabilir. Bir kontrolün

Validating
Validated

Eventları bulunur.


Validating - Validated:

//Kontrol yapılır
private void nameTextBox_Validating(object sender, CancelEventArgs e)
{
         if (!Regex.IsMatch(nameTextBox.Text, @"^[a-zA-Z\s'.]{1-50}$"))
         {
                  //Event iptal edilir
                  e.Cancel = true;
                  nameTextBox.Focus();
                  nameTextBox.SelectAll();
                  errorProvider1.SetError(nameTextBox,"Hatalı isim!");
          }
}

//Kontrol yapılıp hatasız geçildikten sonra çalışan Event
private void nameTextBox_Validated(object sender, EventArgs e)
        {
                 errorProvider1.SetError(nameTextBox,"");
        }

Bu yazımda windows form üzerinde yapılan validate işlemleri ile ilgili bilgi vermeye çalıştım umarım yardımcı olabilmişimdir.


0 yorum :

Yorum Gönder