2016-04-03 12 views
1

2'den fazla metin kutusu için ortak bir işlevi çağırmak istiyorum, bu nedenle tuşa basma yalnızca kayan nokta sayısının bir girdi alabileceğini kontrol edebilir.Tuşa basma işlevi için ortak işlev nasıl yazılır C# içindeki bir metin kutusunun kayan sayısını denetle?

Bu örnek kodum: bu, yalnızca tek bir metin kutusu için çalışır (tbL1Distance). Ama bunu ortak bir metin kutusu kontrolü olarak istiyorum.

private void tbL1Distance_KeyPress(object sender, KeyPressEventArgs e) 
{ 
     char ch = e.KeyChar; 

     if (ch == 46 && tbL1Distance.Text.IndexOf('.') != -1) 
     { 
      e.Handled = true; 
      return; 
     } 

     if (!Char.IsDigit(ch) && ch != 8 && ch != 46) 
     { 
      e.Handled = true; 
     } 
} 

Şimdiden teşekkürler.

+0

Yeni bir denetim oluşturun, TextBox'u devralın ve 'OnKeyPress()' yöntemini geçersiz kılın. –

+0

Lütfen kod örneğini vermeme yardım eder misiniz? veya kodumu düzenler. Lütfen. @VisualVincent – Rakib

+0

Evet, bana birkaç dakika ver ... –

cevap

1

OnKeyPress yöntemini geçersiz kıldığınız TextBox'u devralarak kendi denetiminizi oluşturabilirsiniz. İşlem tamamlandığında

public class CustomTextBox : System.Windows.Forms.TextBox 
{ 
    protected override void OnKeyPress(System.Windows.Forms.KeyPressEventArgs e) 
    { 
     char ch = e.KeyChar; 

     if (ch == 46 && this.Text.IndexOf('.') != -1) //Replaced 'tbL1Distance' with 'this' to refer to the current TextBox. 
     { 
      e.Handled = true; 
     } 
     else if (!Char.IsDigit(ch) && ch != 8 && ch != 46) 
     { 
      e.Handled = true; 
     } 
     base.OnKeyPress(e); 
    } 
} 

, Build menüsüne giderek Build <your project name here> basın ve kontrol şimdi Aracı Box üstünde bulunabilir. Şimdi her normal TextBox'u kendiniz değiştirin. Eğer KeyPress etkinlik hiç doğrulama başarısız olursa ateş olmak istemiyorsanız

Building a project

, sadece her iki if -statements içinde return; ekleyebilir.

+0

@Rakib: Eğer bu işe yararsa, lütfen mesajın solundaki yeşil onay işaretine basarak kabul edilen cevap olarak işaretleyin. Bu cevap +15 itibarı puanları ve +2 itibar puanının sorumlusunu verecektir. :) –

İlgili konular