بایت لرن

آموزشهای برنامه نویسی ، امنیت و شبکه ،ترفند های کم یاب ، سورس کد ، طراحی وب ، اپلیکشن ، انجام پروژه های دانشجویی رایگان

محدود کردن تکست باکس در سی شارپ

محدود کردن تکست باکس در سی شارپ

خب در آموزش امروز می خوایم یادبگیریم چطور یک 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 استفاده کنید

منتظر آموزش های دیگر بایت لرن باشید.....


نظرات (۲)

امیر مهدی جبرئیلی ۲۷ آذر ۹۸ ، ۲۱:۱۷
ممنونم خییلی کمکم کردید ...
pOOya
سلام
میخواستم توی باتن بنویسم اگ تو تکست باکس حروف وارد شد (حروف رو تو تکست باکس نشون بده)، متن لیبل بشه کارکتر نامعتبر است
توی ایف میخوام بنویسم
پاسخ:
خب با regex ها باید کار کنید ببنید اگر ورودی کاربر حروف بود متن لیبل مورد نظر رو تغییر بده
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی
تمامی حقوق مطالب این سایت متعلق به گردانندگان آن است

Valid HTML 4.01!