خب در آموزش امروز می خوایم یادبگیریم چطور یک TextBox رو محدود کنیم که کاراکتر های خاصی رو فقط قبول کنه و طبق نیاز بتونیم از اون استفاده کنیم.
در رویداد (Event) KeyDown یا KeyPress تکست باکس کد های زیر رو نسبت به نیاز اضافه میکنیم
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
// متن
string text = ((Control) sender).Text;
// عدد منفی
if (e.KeyChar == '-' && text.Length == 0)
{
e.Handled = false;
return;
}
// عدد اعشاری
if (e.KeyChar == '.' && text.Length > 0 && !text.Contains("."))
{
e.Handled = false;
return;
}
// عدد
e.Handled = (!char.IsDigit(e.KeyChar) && !char.IsControl(e.KeyChar));
}
|
توضیح کد بالا :
خب با توجه به اینکه sender می تواند شامل هر چیزی باشد ، آن را به کنترل Control تبدیل و متن رو از اون استخراج می کنیم.
-
اگر بخواهیم تکست باکس عدد منفی بگیرید :
- بررسی می کنیم آیا کاراکتر وارد شده علامت منفی است یا نه ؟
- بررسی می کنیم که هیچ چیزی قبلا نوشته نشده باشد،چرا که باید علامت منفی در ابتدای عدد قرار بگیرد
-
اگر بخواهیم تکست باکس بتواند اعداد اعشاری بگیرد :
- بررسی می کنیم آیا علامت اعشار (.) وارد شده است یا نه ؟
- علامت عدد اعشار نمی تواند در ابتدای جمله باشد ، البته شاید در تبدیل به Float درست کار کند اما ما بررسی می کنیم که در ابتدا وارد نشده باشد
- بررسی می کنیم که آیا در این متن قبلاً علامت اعشار (.) وارد شده یا نه؟
- و در نهایت باید بررسی کنیم که آیا کاراکتر وارد شده عدد است یا نه ؟ ( این قسمت حتما باید در انتها بررسی شود )
یک مثال جالب :
//Textbox Mahdod shode b Adad va . va Backspace var regex = new Regex(@"[^0-9\.\b]"); if (regex.IsMatch(eve.KeyChar.ToString())) { eve.Handled = true; } |
نکته : در این مثال باید از ;using System.Text.RegularExpressions استفاده کنید
منتظر آموزش های دیگر بایت لرن باشید.....